2017-01-27 70 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')

這是一個很小的變化,但應該有所幫助。