【问题标题】:Python - simplest and most coherent way to get timezone-aware current time in UTC?Python - 在UTC中获取时区感知当前时间的最简单和最连贯的方法?
【发布时间】:2014-04-15 07:33:34
【问题描述】:

datetime.now() 似乎没有附加时区信息。我想要UTC的当前时间。我该怎么办?

>>> from datetime import datetime
>>> y = datetime.now()
>>> y
datetime.datetime(2014, 3, 11, 11, 18, 33, 598489)

起初我认为datetime.utcnow() 是显而易见的解决方案,但后来我发现它也没有附加时区信息(WTF?)。

>>> from datetime import datetime
>>> y = datetime.utcnow()
>>> y
datetime.datetime(2014, 3, 11, 16, 19, 40, 238810)

【问题讨论】:

    标签: python datetime timezone


    【解决方案1】:

    在 Python 3 中:

    datetime.now(timezone.utc)
    

    在 Python 2.x 中没有时区对象,但您可以编写自己的:

    try:
        from datetime import timezone
    except ImportError:
        from datetime import tzinfo, timedelta
    
        class timezone(tzinfo):
            def __init__(self, utcoffset, name=None):
                self._utcoffset = utcoffset
                self._name = name
    
            def utcoffset(self, dt):
                return self._utcoffset
    
            def tzname(self, dt):
                return self._name
    
            def dst(self, dt):
                return timedelta(0)
    
        timezone.utc = timezone(timedelta(0), 'UTC')
    

    然后你可以像在 Python 3 中那样做datetime.now(timezone.utc)

    【讨论】:

    • python2 polifill 的好主意!
    【解决方案2】:

    我用pytz

    然后使用以下代码

    import pytz
    from datetime import datetime
    now = datetime.utcnow().replace(tzinfo = pytz.utc)
    

    【讨论】:

      【解决方案3】:

      使用datetime.utcnow() 表示当前UTC 时间。

      改编自this 答案,这里是如何使对象时区感知。

      >>> import pytz
      >>> from datetime import datetime
      >>> datetime.now(pytz.utc)
      datetime.datetime(2014, 3, 11, 15, 34, 52, 229959, tzinfo=<UTC>)
      

      【讨论】:

      • 不幸的是,它没有将 UTC 时区附加到 datetime 对象,因为 Python 不包含 any 时区对象。
      • @MarkRansom 啊,是的。我已经编辑了答案以包括时区感知解决方案。
      猜你喜欢
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      相关资源
      最近更新 更多