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)
。
我使用pytz
然后使用以下代码
import pytz
from datetime import datetime
now = datetime.utcnow().replace(tzinfo = pytz.utc)
在UTC中使用datetime.utcnow()
。
从这个答案中适应,这是如何使对象时区了解对象。
>>> import pytz
>>> from datetime import datetime
>>> datetime.now(pytz.utc)
datetime.datetime(2014, 3, 11, 15, 34, 52, 229959, tzinfo=<UTC>)