django 1.4 timezone.now() 与 datetime.datetime.now()

标签 django timezone

我对夏令时处理有点困惑

设置.py:

TIME_ZONE = 'Europe/London'
USE_TZ = True

在 django shell 中:

>>> from django.utils import timezone
>>> import datetime
>>> print timezone.now()
2012-05-28 11:19:42.897000+00:00
>>> print timezone.make_aware(datetime.datetime.now(),timezone.get_default_timez
one())
2012-05-28 12:20:03.224000+01:00

为什么它们在夏令时方面不一样?两者都应该知道区域设置,不是吗?

我已经阅读了文档,但还是一无所知。

最佳答案

根据timezone.now() source :

def now():
    """
    Returns an aware or naive datetime.datetime, depending on settings.USE_TZ.
    """
    if settings.USE_TZ:
        # timeit shows that datetime.now(tz=utc) is 24% slower
        return datetime.utcnow().replace(tzinfo=utc)
    else:
        return datetime.now()

它基于 utc 而不是您的默认时区。您可以通过使用实现相同的值(value)

now = timezone.make_aware(datetime.datetime.now(),timezone.get_default_timezone())
print now.astimezone(timezone.utc)

关于django 1.4 timezone.now() 与 datetime.datetime.now(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10783864/

相关文章:

javascript - 查找浏览器连接到 Web 服务器的时区

MySQL CONVERT_TZ()

ios - 时区问题-一年中获得意外结果,怀疑我没有正确处理时区

django - DRF : Using 'SlugRelatedField' on the 'ImageField'

python - 类型错误 : as_view() takes 1 positional argument but 2 were given

python - 如何在 Django 中添加访客(匿名)用户的新记录

sql - 如何在 .NET/Sql Server 中在用户本地时间发送电子邮件?

python - 在没有基于模型的数据库的情况下使用 Django View 和表单

javascript - Django,html 标签未解释

java - 哪些三字母时区 ID 没有被弃用?