我目前正在使用cpython 日期时间api,试图为霍华德·辛纳特的日期库 zoned_time对象编写pybind11绑定,为此,我必须在Hinnant的TimeZone和cpythonPyDateTime_TZInfo之间执行双向转换。
cpython中的PyDateTime_CAPI定义了许多创建PyDateTime_*对象的操作;但是,它只定义了TZInfo的类型,没有创建这些对象的方法。api的实现定义了时区的一个非常基本的实现;但是,这并不是通过API公开的。最终,为了在时区对象上具有适当的可操作性,需要有一些C++实现的TZInfo接口。我在这里看到的问题是,API代码依赖于call_tzinfo_method,它调用假定在派生的python类上实现的方法,而不是接口上的实现方法。从我在这里可以看到的情况来看,没有办法在TZInfo中实现C++对象,这最终会导致无法正确绑定时区感知的datetime对象。在当前的cpython实现中,是否存在这样的方法,或者这根本不可能?
发布于 2018-06-28 07:28:29
TZInfo对象可以在版本3.7的CPython API中使用PyTimeZone_FromOffsetAndName和PyTimeZone_FromOffset创建
https://stackoverflow.com/questions/47904296
复制相似问题