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)
答案 0 :(得分:4)
在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)
。
答案 1 :(得分:1)
将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>)
答案 2 :(得分:1)
我使用pytz
然后使用以下代码
import pytz
from datetime import datetime
now = datetime.utcnow().replace(tzinfo = pytz.utc)