Python - 如何将模型中的Datetimefield转换为UTC时区

0 投票
2 回答
878 浏览
提问于 2025-04-16 04:23

在Python中,我该如何把一个包含我本地服务器时间的DatetimeField转换成UTC时区的DatetimeField呢?

2 个回答

3
>>> import datetime
>>> import pytz
>>> datetime.datetime.now(pytz.timezone('Europe/Minsk'))
datetime.datetime(2011, 8, 8, 15, 32, 7, 816893, tzinfo=<DstTzInfo 'Europe/Minsk' EEST+3:00:00 DST>)
>>> x = datetime.datetime.now()
>>> x
datetime.datetime(2011, 8, 8, 15, 32, 26, 960839)
>>> x.replace(tzinfo=pytz.timezone('Europe/Minsk'))
datetime.datetime(2011, 8, 8, 15, 32, 26, 960839, tzinfo=<DstTzInfo 'Europe/Minsk' MMT+1:50:00 STD>)
>>> x.replace(tzinfo=pytz.timezone('Europe/Minsk')).isoformat()
'2011-08-08T15:32:26.960839+01:50'
>>> datetime.datetime.now(pytz.timezone('Europe/Minsk')).isoformat()
'2011-08-08T15:33:16.720865+03:00'

请比较一下 :) 用替换的方法并不好。最好的办法是先转换成时间戳,然后再转换回日期时间。

最佳方法:

pytz.timezone('Europe/Minsk').localize(datetime.datetime.now())

2

我想到的最好办法是把它转换成时间戳,然后使用 datetime.utcfromtimestamp 这个类方法。

import time
import datetime

def to_utc(dateTime)
    timeStamp = time.mktime(dateTime.timetuple()) + dateTime.microsecond
    return datetime.datetime.utcfromtimestamp(timeStamp)

撰写回答