0

我目前正在使用 cpython datetime api尝试为Howard Hinnant 的日期库zoned_time 对象编写 pybind11 绑定,为此我必须在 Howard Hinnant 的 TimeZone 和 cpython PyDateTime_TZInfo 之间执行双向转换。

cpython 中的 PyDateTime_CAPI 定义了许多创建 PyDateTime_* 对象的操作;但是,它只定义了 TZInfo 的类型,没有定义创建这些对象的方法。api的实现定义了一个非常基本的时区实现;但是,这不会通过 API 公开。最终,为了对时区对象具有适当的可操作性,需要对 TZInfo 接口进行一些 C++ 实现。我在这里看到的问题是 API 代码依赖于 call_tzinfo_method它正在调用假定在派生 python 类上实现的方法,而不是在接口上实现的方法。从我在这里可以看到,没有办法在 C++ 中实现 TZInfo 对象,这最终将导致无法正确绑定时区感知日期时间对象。有没有办法解决这个问题,或者在当前的 cpython 实现中这根本不可能?

4

1 回答 1

0

TZInfo 对象可以在版本 3.7 的 CPython API 中使用PyTimeZone_FromOffsetAndNamePyTimeZone_FromOffset

于 2018-06-28T07:28:29.180 回答