如何通过提供/考虑时区将日期和时间转换为时间戳?

时间:2017-01-10 10:38:26

标签: python timezone timestamp utc

我正在尝试将日期和时间转换为不同时区的时间戳。

考虑我有一个字符串2015-07-24T19:23:49+0530。 在这里,我可以得到年(2015),月(07),日期(24),小时(19),分钟(23),秒(49)。

最后是时区(530表示IST)。

我的问题是。

  1. 将上述日期转换为时间戳取决于时区吗?
  2. 如果是,我如何将上述日期转换为UTC?
  3. 我试过了:

    >>> 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时间戳。

1 个答案:

答案 0 :(得分:0)

使用%z解析字符串时,可以使用datetime.strptime指令作为时区:

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

但是不保证该指令适用于所有机器