【问题标题】:Converting string formatted ISO date to Epoch in Python在 Python 中将字符串格式的 ISO 日期转换为 Epoch
【发布时间】:2021-12-14 15:16:39
【问题描述】:

我有一个字符串格式的日期2021-12-14T12:05:51.8031499 我怎样才能得到这个的 Epoch 值?

【问题讨论】:

标签: python datetime iso8601


【解决方案1】:

dateutil 是你的朋友,也是 7 位小数秒:

from dateutil.parser import isoparse

isoparse("2021-12-14T12:05:51.8031499")
Out[2]: datetime.datetime(2021, 12, 14, 12, 5, 51, 803149)

isoparse("2021-12-14T12:05:51.8031499").timestamp()
Out[3]: 1639479951.803149

注意:给定 ISO 格式的日期/时间将生成 naive datetime object,Python 会将其视为本地时间,即它将从您机器的本地时间设置转换为 Unix 时间之前的 UTC为timestamp() 计算!

【讨论】:

    【解决方案2】:

    将日期字符串解析为日期时间对象,然后使用utcfromtimestamp() 函数从中返回纪元时间。

    请注意,示例时间中有一位额外的数字。 Python 日期时间中的预期微秒数是 6 位数而不是 7(例如 803149)。

    from datetime import datetime, timezone
    d = '2021-12-14T12:05:51.803149'
    
    dt = datetime.strptime(d, '%Y-%m-%dT%H:%M:%S.%f')
    print(dt)
    
    # convert datetime to time-aware timezone at UTC
    # so correct timestamp is returned
    dt = dt.replace(tzinfo=timezone.utc)
    
    # Return the time in seconds since the epoch 
    seconds_since_epoch = dt.timestamp()
    print(seconds_since_epoch)
    
    # convert epoch back to datetime object
    d2 = datetime.utcfromtimestamp(seconds_since_epoch)
    print(d2)
    

    输出:

    2021-12-14 12:05:51.803149
    1639483551.803149
    2021-12-14 12:05:51.803149
    

    【讨论】:

      猜你喜欢
      • 2015-04-27
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多