2017-01-27 68 views
0

我从一个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'.

+1

什么是'Date'? – poke

+0

[将字符串转换日期时间(http://stackoverflow.com/questions/466345/converting-string-into-datetime) – rsp

+0

Quantlib日期() – ulrich

回答

2

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将其导出到的语言。

+0

如果你已经有一个'datetime'实例,相反,merlin2011的可能的重复答案当然是要走的路。 –

3

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) 
2

使用dateutil模块进行研究。

from dateutil import parser 

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

您的代码是错误的。

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

这样: datetime.datetime.strptime(date_text, '%Y-%m-%d')

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