我正在尝试将日期和时间转换为不同时区的时间戳。
考虑我有一个字符串2015-07-24T19:23:49+0530
.在这里,我可以得到年(2015),月(07),日期(24),小时(19),分钟(23),秒(49)。
最后是时区(530 表示 IST)。
我的问题是。
- 将上述日期转换为时间戳是否取决于时区?
- 如果是,如何将上述日期转换为 UTC?
我试过了:
>>> dt = datetime(2015,03,19,20,18,15)
>>> timestamp = (dt - datetime(1970, 1, 1)).total_seconds()
>>> timestamp
1426796295.0
在上面的代码中,它正在考虑本地时区。在哪里可以传递时区以获得正确的 UTC 时间?
我没有尝试将本地时间转换为 UTC 时间戳。实际上,字符串也可能包含其他时区。前任:
2015-07-24T19:23:49+0530 #-> This is for Indian timezone.
2015-07-24T19:23:49+0300 #-> This is Istanbul timezone.
但两个时区的 UTC 时间戳会有所不同。
我的问题是:如何通过考虑时区来获取UTC时间戳。
在使用
datetime.strptime
解析字符串时,您可以使用时区的 %z
指令:
from datetime import datetime
ist = '2015-07-24T19:23:49+0300'
dt_ist = datetime.strptime(ist, '%Y-%m-%dT%H:%M:%S%z')
print(dt_ist.year, dt_ist.month, dt_ist.day, dt_ist.tzinfo)
# 2015 7 24 UTC+03:00
但是,该指令并不保证适用于所有机器