将字符串转换为 Quantlib Date()

convert string into Quantlib Date()

我正在从 csv 中读取一些参数数据,我正在努力转换日期以便它被 class Date()

接受

我试过了:

d = datetime.date(datetime.strptime('2011-03-07','%Y-%m-%d'))
Date(d)

但是 returns:

NotImplementedError: Wrong number or type of arguments for overloaded function 'new_Date'.

quantlib documentation 建议您传递以下参数,而不是 Python datetime.

Date (Day d, Month m, Year y)

目前似乎没有 Python API 文档,但根据 this answer,它与 C++ 相匹配,那么它应该可以简单地为每个值。也就是说,您将为 2011 年 3 月 3 日传递以下参数。

Date(3, 3, 2011)

要从字符串转换,您可以手动解析字符串,或像您所做的那样使用日期时间class。

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

这是一个小改动,但应该有所帮助。

QuantLib 提供了一个 DateParser class 无需通过 datetime 即可完成工作;你可以写

d = DateParser.parseFormatted('2011-03-07','%Y-%m-%d')

获取您的 Date 实例。这也适用于 C++,您可以在其中编写

Date d = DateParser::parseFormatted('2011-03-07','%Y-%m-%d')

或通过 SWIG 导出 QuantLib 的其他语言。