【问题标题】:How would I add the timezone to a datetime.datetime object?如何将时区添加到 datetime.datetime 对象?
【发布时间】:2014-05-26 08:13:35
【问题描述】:

我有一个 datetime.datetime 对象 (datetime.datetime(2014, 4, 11, 18, 0)),我想使用 pytz 为其分配一个时区。我知道您可以将 pytzdatetime.datetime.now() 对象 (datetime.datetime.now(pytz.timezone('America/Los_Angeles'))) 一起使用,但我将如何使用自定义对象呢?

【问题讨论】:

    标签: python python-2.7 datetime timezone pytz


    【解决方案1】:

    或者,您可以直接将时区分配给os.environ['TZ']

    import os
    import datetime
    
    print datetime.datetime.now()
    
    os.environ['TZ'] = 'America/Los_Angeles'
    
    print datetime.datetime.now()
    

    【讨论】:

    • 感谢您的 +1 :)
    • 您应该在 TZ 更改后致电 time.tzset()。此外,设置 TZ 和使用 tzset() 都是 Unix 特定的。
    • 这是一种在 Linux 上非常简单但有用的方法。不管你怎么剪,Python 日期时间都是一场噩梦。
    【解决方案2】:

    使用localize method

    import pytz
    import datetime
    la = pytz.timezone('America/Los_Angeles')
    now = la.localize(datetime.datetime.now())
    print(repr(now))
    

    产量

    datetime.datetime(2014, 4, 11, 21, 36, 2, 981916, tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>)
    

    localize 用于解释与时区相关的时区未知日期时间。结果是一个时区感知的日期时间。 请注意,某些时区不知道的日期时间,例如 datetime(2002, 10, 27, 1, 30, 00),在某些时区是不明确的。 Use the is_dst parameter 避免歧义。

    astimezone 用于将感知日期时间转换为其他时区。

    【讨论】:

      猜你喜欢
      • 2015-11-28
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2014-09-14
      • 2023-01-19
      • 2019-03-28
      • 2011-10-19
      相关资源
      最近更新 更多