我從一個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