我正在从csv读取一些参数数据,我正在努力转换日期,以便它被类Date()接受
我试过了:
d = datetime.date(datetime.strptime('2011-03-07','%Y-%m-%d'))
Date(d)
但它返回:
NotImplementedError:重载的参数的数量或类型错误 function'new_Date'。
答案 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')
这是一个小小的改变,但应该有所帮助。