关于python:如何获得夏令时感知GMT

How to get daylight-saving-aware GMT

使用python/django 1.5.4,我试图找到一种方法来获取目前在英国伦敦的时间。

这样做似乎非常复杂。

显然有time.time()、datetime.now()、datetime.utcnow(),但这些方法返回服务器时间。

这是一个问题,因为服务器可能不在英国,上述方法不考虑日光节约。

有没有一种简单、直接的方法可以做到这一点,而无需过度导入和第三方应用程序?


要获取当前在英国伦敦的时间:

1
2
3
4
5
#!/usr/bin/env python
from datetime import datetime
import pytz # $ pip install pytz

print(datetime.now(pytz.timezone('Europe/London')))

即使在DST转换期间,本地时间可能不明确,它也能正常工作。

django中,设置USE_TZ=True并使用timezone.now()获取UTC中的当前时间作为一个已知的日期时间对象。它在使用当前时区的模板中呈现,您可以使用.activate()设置该时区,否则将使用由TIME_ZONE定义的默认时区。


而不是使用time.time()、datetime.now()、datetime.utcnow(),在django中使用from django.utils import timezone and use timezone.now。这是专门为在Django处理这种情况而设计的。如需进一步阅读,请查看此处。