Python 如何将日期时间从特定时区转换为UTC?django DateTimeField

Python 如何将日期时间从特定时区转换为UTC?django DateTimeField,python,django,datetime,timezone,Python,Django,Datetime,Timezone,我在处理DateTimeField字段时遇到问题 问题是,假设我用时区创建了datetime >>> x = datetime.tzinfo("Asia/Kuala_Lumpur") >>> y = datetime.datetime(2018, 7, 29, 12, 0, 13, 204815, x) 我想将“y”转换为UTC,以便将其保存到DateTimeField 我该怎么做 下面是我的控制台测试的其余部分 >>> a = Atten

我在处理DateTimeField字段时遇到问题

问题是,假设我用时区创建了datetime

>>> x = datetime.tzinfo("Asia/Kuala_Lumpur")
>>> y = datetime.datetime(2018, 7, 29, 12, 0, 13, 204815, x)
我想将“y”转换为UTC,以便将其保存到DateTimeField

我该怎么做

下面是我的控制台测试的其余部分

>>> a = Attendance.objects.last()
>>> a
<Attendance: wawa>
>>> a.updated_at
datetime.datetime(2018, 7, 29, 13, 37, 26, 459259, tzinfo=<UTC>)
>>> a.updated_at = timezone.now()
>>> a.updated_at
datetime.datetime(2018, 8, 11, 8, 49, 5, 381198, tzinfo=<UTC>)
>>> a.updated_at = timezone.now()
>>> a.updated_at
datetime.datetime(2018, 8, 11, 8, 52, 33, 243825, tzinfo=<UTC>)
>>> x = datetime.tzinfo("Asia/Kuala_Lumpur")
>>> y = datetime.datetime(2018, 7, 29, 12, 0, 13, 204815, x)
>>> y
datetime.datetime(2018, 7, 29, 12, 0, 13, 204815, tzinfo=<datetime.tzinfo object at 0x113ac6600>)
>>> y = datetime.datetime(2018, 7, 29, 12, 0, 13, 204815, x)
>>> y = datetime.datetime(2018, 7, 29, 12, 0, 13, 204815, x)
>>> a.updated_at = y
>>> a.updated_at
datetime.datetime(2018, 7, 29, 12, 0, 13, 204815, tzinfo=<datetime.tzinfo object at 0x113ac6600>)
>>> a.save()
>>> a = Attendance.objects.last()
>>> a.updated_at
datetime.datetime(2018, 8, 11, 13, 21, 2, 38046, tzinfo=<UTC>)
>a=attention.objects.last()
>>>a
>>>a.在
datetime.datetime(2018,7,29,13,37,26,459259,tzinfo=)
>>>a.updated_at=timezone.now()
>>>a.在
datetime.datetime(2018,8,11,8,49,5381198,tzinfo=)
>>>a.updated_at=timezone.now()
>>>a.在
datetime.datetime(2018,8,11,8,52,33243825,tzinfo=)
>>>x=datetime.tzinfo(“亚洲/吉隆坡”)
>>>y=datetime.datetime(2018,7,29,12,0,13,204815,x)
>>>y
datetime.datetime(2018,7,29,12,0,13,204815,tzinfo=)
>>>y=datetime.datetime(2018,7,29,12,0,13,204815,x)
>>>y=datetime.datetime(2018,7,29,12,0,13,204815,x)
>>>a.更新的_at=y
>>>a.在
datetime.datetime(2018,7,29,12,0,13,204815,tzinfo=)
>>>a.保存()
>>>a=考勤.objects.last()
>>>a.在
datetime.datetime(2018,8,11,13,21,23846,tzinfo=)
我让它工作起来了

import datetime
import pytz

time_zone = pytz.timezone('Asia/Kuala_Lumpur')

# get naive date
date = datetime.datetime.strptime("28/07/2018", '%d/%m/%Y').date()
# get naive time
time = datetime.time(12, 30)
# combite to datetime
date_time = datetime.datetime.combine(date, time)
# make time zone aware
date_time = time_zone.localize(date_time)

# convert to UTC
utc_date_time = date_time.astimezone(pytz.utc)
# get time
utc_time = utc_date_time.time()
你没有。 Django存储为Postgresql的
datetimetz
类型。datetimetz类型不存储任何时区信息。它存储为UTC时间,当您选择时,它会根据DB设置中定义的时区显示