【问题标题】:Converting python UTC timestamp to and from string将python UTC时间戳与字符串转换
【发布时间】:2018-12-06 00:48:49
【问题描述】:

这是一个python代码sn-p,它采用当前时间(UTC),将其转换为格式化字符串并解析字符串。 我想获得相同的时间戳,但由于我所在的时区,我获得了不同的时间戳。

如何重建与开始时相同的时间戳?

#!/usr/bin/env python3  
import time
from datetime import datetime
TIME_FORMAT='%Y-%m-%d %H:%M:%S'
ts = int(time.time()) # UTC timestamp
timestamp = datetime.utcfromtimestamp(ts).strftime(TIME_FORMAT)
d1 = datetime.strptime(timestamp, TIME_FORMAT)
ts1 = int(d1.strftime("%s"))
print("Time as string : %s" % d1)
print("Source timestamp : %d" % ts)
print("Parsed timestamp : %d" % ts1)

输出:

Time as string : 2018-12-06 00:47:32
Source timestamp : 1544057252
Parsed timestamp : 1544086052

【问题讨论】:

    标签: python python-3.x datetime


    【解决方案1】:

    从字符串到没有时区的时间戳

    from datetime import datetime, timezone
    
    DATE = "2021-05-21 12:00"
    ts = datetime.strptime(DATE, "%Y-%m-%d %H:%M").replace(tzinfo=timezone.utc).timestamp()
    print(ts)
    

    【讨论】:

      【解决方案2】:

      在字符串中,没有指定时区,因此它不被视为 UTC,而是您的个人时区。要解决这个问题,你必须在解析时指定字符串为UTC,如下所示:

      d1 = datetime.strptime(timestamp + "+0000", TIME_FORMAT + '%z')
      ts1 = d1.timestamp()
      

      完整的工作 sn-p:

      #!/usr/bin/env python3
      import time
      from datetime import datetime
      TIME_FORMAT='%Y-%m-%d %H:%M:%S'
      ts = int(time.time()) # UTC timestamp
      timestamp = datetime.utcfromtimestamp(ts).strftime(TIME_FORMAT)
      d1 = datetime.strptime(timestamp + "+0000", TIME_FORMAT + '%z')
      ts1 = d1.timestamp()
      print("Time as string : %s" % d1)
      print("Source timestamp : %d" % ts)
      print("Parsed timestamp : %d" % ts1)
      

      +0000 对应 utc 偏移量。

      【讨论】:

      • 那行得通(我不小心用 python 2 运行它)。
      • 其实我说得太早了。我还有时间增量:d1 = datetime.strptime(timestamp + "+0000", TIME_FORMAT + '%z') 1544063570 vs 1544092370
      • 令人惊讶的是,这段代码对我有用,除了我用ts1 = d1.timestamp() 替换了ts1 = int(d1.strftime("%s")),因为我有一个错误。也许这是你的问题?
      • 是的,现在我得到了相同的时间戳。将使用完整的工作 sn-p 编辑答案。再次感谢!
      猜你喜欢
      • 1970-01-01
      • 2015-12-19
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多