将字符串转换为Quantlib Date()

时间:2017-01-27 19:18:41

标签: python quantlib

我正在从csv读取一些参数数据,我正在努力转换日期,以便它被类Date()接受

我试过了:

d = datetime.date(datetime.strptime('2011-03-07','%Y-%m-%d'))
Date(d)

但它返回:

  

NotImplementedError:重载的参数的数量或类型错误   function'new_Date'。

4 个答案:

答案 0 :(得分:5)

QuantLib提供DateParser类,无需通过datetime即可完成工作;你可以写

d = DateParser.parseFormatted('2011-03-07','%Y-%m-%d')

获取Date个实例。这也适用于C ++,您可以在其中编写

Date d = DateParser::parseFormatted('2011-03-07','%Y-%m-%d')

或通过SWIG导出QuantLib的其他语言。

答案 1 :(得分:3)

quantlib documentation表示您应该传递以下参数,而不是Python datetime

Date (Day d, Month m, Year y)

目前似乎没有Python API文档,但根据this answer,它与C ++匹配,那么它应该只是为每个值传递整数。也就是说,您将在2011年3月3日传递以下参数。

Date(3, 3, 2011)

要从字符串转换,您可以手动解析字符串,也可以像使用那样使用datetime类。

d = datetime.strptime('2011-03-07','%Y-%m-%d')
quantDate = Date(d.day, d.month, d.year)

答案 2 :(得分:2)

使用dateutil模块。

from dateutil import parser

parser.parse('2011-03-07')
# datetime.datetime(2011, 3, 7, 0, 0)

答案 3 :(得分:0)

您的代码不正确。

更改此行:     d = datetime.date(datetime.strptime('2011-03-07','%Y-%m-%d'))

到此:     datetime.datetime.strptime(date_text, '%Y-%m-%d')

这是一个小小的改变,但应该有所帮助。

相关问题