【问题标题】:Convert local time to GMT in python在python中将当地时间转换为GMT
【发布时间】:2011-11-07 13:41:09
【问题描述】:

我有一个程序可以在当地时间(以色列)接收日期时间字符串,我需要将其转换为纪元秒数。

我想我可以使用诸如“UTC +02:00”之类的格式,但问题是,由于日间储蓄,以色列手表的表现与其他国家不同。有没有办法让纪元时间取决于国家/地区?

【问题讨论】:

  • 查看日期时间模块

标签: python timezone


【解决方案1】:
> import pytz
> pytz.country_timezones['il'] # Israel

['Asia/Jerusalem']

这是否描述了您的时区?

如果是,那么您可以使用:

from datetime import datetime
import pytz

a = "2011-11-07 12:34:56"
dt = pytz.timezone('Asia/Jerusalem').localize(datetime.strptime(a, '%Y-%m-%d %H:%M:%S')).astimezone(pytz.utc)

dt 现在是 datetime.datetime(2011, 11, 7, 10, 34, 56, tzinfo=<UTC>),即“2011-11-07 12:34:56”(在耶路撒冷)。

为了将其转换为纪元秒(Unix时间戳,即自1970-01-01 00:00:00 UTC以来的秒数),您可以直接使用:

import calendar
from datetime import datetime
import pytz

a = "2011-11-07 12:34:56"
epoch = calendar.timegm(pytz.timezone('Asia/Jerusalem').localize(datetime.strptime(a, '%Y-%m-%d %H:%M:%S')).utctimetuple())

# epoch is 1320662096

【讨论】:

    【解决方案2】:

    Python 不包含除基类 tzinfo 之外的任何内置时区类,这是无用的。您需要安装另一个包,例如pytz

    请注意,当夏令时发生变化时,当同一时间发生两次时,您会遇到本地时间不明确的问题。如果您可以以 UTC 存储和传输时间并且仅在显示时转换,那总是最好的。我意识到这并不总是可能的。

    【讨论】:

      【解决方案3】:

      是的,有。 pytz 模块结合了政治时区的Olson database 并允许您构造本地时间对象并在时区之间进行转换。您按名称查找时区。 UTC 是Etc/UTC

      【讨论】:

        【解决方案4】:

        要知道是否调整夏令时,请使用:

        time.daylight
        

        这似乎对我有用:

        >>> time.gmtime(time.mktime(time.strptime("7 Nov 2011 12:12:12", "%d %b %Y %H:%M:%S")))
        time.struct_time(tm_year=2011, tm_mon=11, tm_mday=7, tm_hour=19, tm_min=12, tm_sec=12, tm_wday=0, tm_yday=311, tm_isdst=0)
        

        【讨论】:

        • time.daylight 在这里帮不了你。 time.mktime() 尝试自行猜测输入本地时间的 DST(strptime() 设置 is_dst=-1)。在 DST 更改期间,50% 的时间可能是错误的。
        【解决方案5】:
        datetime.datetime.utcfromtimestamp(time.mktime(time.localtime()))
        

        【讨论】:

        • 你到底在问谁?如果这是一个解决方案,请解释它,不要问任何问题。
        猜你喜欢
        • 2019-11-06
        • 2012-08-28
        • 2013-10-29
        • 2021-03-12
        • 2016-02-03
        • 2021-10-02
        • 2017-09-11
        相关资源
        最近更新 更多