【问题标题】:Converting to a non-daylight savings timezone转换为非夏令时时区
【发布时间】:2019-12-15 14:39:34
【问题描述】:

在 python 中,我试图将一堆 UTC 日期时间转换为本地化时区,但全年标准时间。例如,在太平洋时间,我全年都需要 PST,而不是 PDT 和 PST 从夏季切换到冬季。或者换一种说法,有没有办法为时区指定“标准”时间?

【问题讨论】:

  • 请注意,在大多数情况下,这是一个错误。太平洋时区的人们实际上并没有选择使用 PST 还是 PDT。这是太平洋时区定义的一部分。也许这是作为要求交给你的?如果是这样,正确的做法是了解时区,然后将这些知识提供给向您提出要求的人。按要求实现它是故意实现一个错误。 (我在这里假设很多,如果不是这种情况,请道歉,只是你不是第一个问的,通常是回复。)
  • 例外情况是,如果 PST 指的是 Pitcairn Standard Time,仅在皮特凯恩群岛使用,即 UTC-8 全年。但我不认为那是你的意思。

标签: python datetime timezone pytz


【解决方案1】:
from datetime import datetime, timezone

utc_dt = "enter here UTC time "

utc_dt.replace(tzinfo=timezone.utc).astimezone(tz=None)

【讨论】:

    【解决方案2】:

    您可以为特定时区指定不随夏令时而改变的 UTC 偏移量。以下示例将 UTC 转换为太平洋标准时间 (PST)。

    from datetime import datetime, timedelta, timezone
    
    utc = datetime(2019, 8, 7, 10, 30, tzinfo=timezone.utc)
    pst = utc.astimezone(timezone(-timedelta(hours=8)))
    print(utc)
    # 2019-08-07 10:30:00+00:00
    print(pst)
    # 2019-08-07 02:30:00-08:00
    

    获取指定时区的偏移小时数:

    import pytz                                         
    def get_standard_time_offset(tz_name):
        t = pytz.timezone(tz_name)
        # DATE HERE IS AN ARBITRARY WINTER DATE THAT WOULDN'T WORK IN THE SOUTHERN HEMISPHERE
        offset = t.utcoffset(datetime(2010,1,1))
        hrsoffset = offset.total_seconds()/3600
        return hrsoffset
    

    【讨论】:

    • 非常感谢!我需要的最后一件事是获取命名时区的 timedelta 小时的方法。下面的这个函数执行该步骤: def get_standard_time_offset(tz_name): t = timezone(tz_name) offset = t.utcoffset(datetime(2010,1,1)) hrsoffset = offset.total_seconds()/3600 return hrsoffset
    猜你喜欢
    • 2012-10-31
    • 2018-04-30
    • 1970-01-01
    • 2018-05-19
    • 2021-01-16
    • 2018-04-12
    • 2011-08-06
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多