【问题标题】:pybind11 zoned datetime conversionspybind11 分区日期时间转换
【发布时间】:2017-12-18 17:57:12
【问题描述】:

我目前正在寻找一种使用 pybind11 处理 python 和 C++ 之间的分区日期时间转换的解决方案。在 pybind11/chrono.h 中,使用内置的 python datetime 对象和 std 库 time_point 对象支持使用朴素的 datetime 进行此类转换;但是,没有明确处理 python datetime.datetime 对象的关联时区。我想知道是否在 pybind11 中做了任何工作来更全面地支持这些转换并考虑时区。

【问题讨论】:

    标签: python c++ datetime timezone


    【解决方案1】:

    pybind11/chrono.h 绑定专门提供std::chrono 和python 的datetime 之间的转换。由于std::chrono 没有时区支持,那么绑定也不能。换句话说 - 你会将它绑定到什么?

    一个好的答案可能是Howard Hinnant's date.h and tz.h libraries - 这确实是proposed for standardization。但是,这还没有发生。

    即使没有标准化,也可以编写这样的绑定并将它们包含在 pybind 中——尽管我不知道有人这样做。如果您有兴趣,最好创建一个问题与 pybind 维护者的in their issue tracker 讨论。

    【讨论】:

    • 正如您所指出的,这纯粹是要绑定哪组时区感知对象的问题。我同意此时最好的候选者是 Howard Hinnant 的图书馆。我会按照你的建议提出这个问题;但是,我认为会不愿意为该 Howard Hinnant 的库添加额外的依赖项。理想情况下,已经有人编写了这些绑定,并且可以简单地推广它们。如果它们似乎不存在,我当然会自己考虑这样做。
    【解决方案2】:

    截至本文发布之时,CPython 日期时间 API 中无法处理分区时间。我发现的最佳选择是包装 date 并在 python 中有效地定义一个全新的日期时间库,它可以将分区时间传递给 C++

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-14
      • 2021-05-02
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多