【问题标题】:How to easily create a datetime object from time with unit since epoch?如何从纪元以来的单位时间轻松创建日期时间对象?
【发布时间】:2021-04-29 11:25:13
【问题描述】:

假设我得到了一个自纪元以来的时间戳1611590898133828,考虑到单位microseconds,我怎么能轻松地将其转换为日期时间对象。

from datetime import datetime
timestamp_micro = 1611590898133828
dt = datetime.datetime.fromtimestamp(timestamp_micro / 1e6)

我希望能够进行简单的转换,因为有时我需要几微秒,有时是几秒,有时是纳秒来转换。

timestamp_micro = 1611590898133828
dt = datetime.datetime.fromtimestamp(timestamp_micro, unit="us")

这有可能吗?对我来说,使用 python 的 datetime 包只是一种痛苦。也许您还可以推荐另一个更容易处理时间戳的包?

【问题讨论】:

    标签: python-3.x datetime timestamp python-3.7


    【解决方案1】:

    pandas.to_datetime 提供设置unit as a keyword 的选项:

    import pandas as pd
    
    t, UNIT = 1611590898133828, 'us'
    
    dt = pd.to_datetime(t, unit=UNIT)
    
    print(dt, repr(dt))
    # 2021-01-25 16:08:18.133828 Timestamp('2021-01-25 16:08:18.133828')
    

    您现在可以使用 pandas 的时间戳或转换为常规 Python 日期时间对象,例如

    dt.to_pydatetime()
    # datetime.datetime(2021, 1, 25, 16, 8, 18, 133828)
    

    还请注意,如果您使用fromtimestamp 而不设置时区,您将得到天真的日期时间,Python 会将其视为本地时间(UTC 偏移量可能不是 0) .参见例如here.

    【讨论】:

      【解决方案2】:

      您只需调用const dt = new Date(timestamp) 即可创建新的javascript 日期对象。这里的timestamp 值是一个高达毫秒精度的纪元。 JavaScript 确实具有对更高精度的原生支持。

      如果您经常需要处理日期,我建议您使用诸如 momentJS 之类的包,因为原生 JS 处理日期/时间非常痛苦。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-14
        • 2016-06-06
        • 2014-07-24
        • 2010-11-24
        • 1970-01-01
        • 2021-06-11
        • 1970-01-01
        • 2011-10-23
        相关资源
        最近更新 更多