python - 将python UTC时间戳与字符串转换
问题描述
这是一个 Python 代码片段,它采用当前时间(以 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
解决方案
在字符串中,没有指定时区,因此它不被视为 UTC,而是您的个人时区。要解决该问题,您必须在解析时指定字符串为UTC,如下所示:
d1 = datetime.strptime(timestamp + "+0000", TIME_FORMAT + '%z')
ts1 = d1.timestamp()
完整的工作片段:
#!/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 偏移量。
推荐阅读
- sql - Toad -SQL-define-declare 游标的问题
- jquery - jQuery - 从元素中添加/删除类名并在按钮上切换活动类
- python - 我无法使用我想要的列创建新的数据框
- kotlin - 为什么 Ktor Post Request 冻结应用程序,但 Get 不冻结它?
- r - 计算跨组的共现
- soapui - 输入 XML SOAP 请求
- python - 根据条件将某些值附加到数据集
- angularjs - 带有 Bootstrap 的 AngularJS 动态 Youtube 视频
- javascript - ReactJS - 如何使用 react-to-print 打印可滚动元素的所有内容
- mount - 带有 altroot 或“-R”的 ZFS 池不会自动挂载