Python - 在 UTC 中获取时区感知当前时间的最简单和最连贯的方法?

标签 python datetime timezone

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 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)

关于Python - 在 UTC 中获取时区感知当前时间的最简单和最连贯的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22329962/

相关文章:

python - matplotlib 中许多变量的累积图?

php - 为什么有多个时区选择都解析为 EST?

jquery - 从 YYYY-MM-DD H :i:s to H:i:s DD-MM-YYYY in Jquery 转换日期

ruby-on-rails - Rails to_json 响应将日期时间转换为 unixtimestamp

在R中进行POSIXlt转换期间删除时区

MySQL 时区

python - Pyserial 发送超过一个字节

python - 使用 Flask 在 Heroku 上为 .htc 文件添加 MIME 类型

python - 如何在Python中选择其一列值包含特定字符串的行?

php - 检查值是否为日期时间