我从一个CSV阅读一些参数数据,我挣扎,使其由类Date()将字符串转换成Quantlib日期()
我试图接受将日期转换是:
d = datetime.date(datetime.strptime('2011-03-07','%Y-%m-%d'))
Date(d)
但它返回:
NotImplementedError: Wrong number or type of arguments for overloaded function 'new_Date'.
我从一个CSV阅读一些参数数据,我挣扎,使其由类Date()将字符串转换成Quantlib日期()
我试图接受将日期转换是:
d = datetime.date(datetime.strptime('2011-03-07','%Y-%m-%d'))
Date(d)
但它返回:
NotImplementedError: Wrong number or type of arguments for overloaded function 'new_Date'.
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将其导出到的语言。
如果你已经有一个'datetime'实例,相反,merlin2011的可能的重复答案当然是要走的路。 –
的quantlib documentation建议你应该传递以下参数,而不是一个Python datetime
。
Date (Day d, Month m, Year y)
似乎没有要在目前的Python API文档,但根据this answer,它的C++相匹配,那么它应该工作简单地在每个值整数传递。也就是说,你可以通过下面的参数为3月3日,2011年
Date(3, 3, 2011)
从字符串转换,你可以手动解析字符串,或使用datetime类为你做了。
d = datetime.strptime('2011-03-07','%Y-%m-%d')
quantDate = Date(d.day, d.month, d.year)
使用dateutil
模块进行研究。
from dateutil import parser
parser.parse('2011-03-07')
# datetime.datetime(2011, 3, 7, 0, 0)
您的代码是错误的。
改变这一行: d = datetime.date(datetime.strptime('2011-03-07','%Y-%m-%d'))
这样: datetime.datetime.strptime(date_text, '%Y-%m-%d')
这是一个很小的变化,但应该有所帮助。
什么是'Date'? – poke
[将字符串转换日期时间(http://stackoverflow.com/questions/466345/converting-string-into-datetime) – rsp
Quantlib日期() – ulrich