Python将时间转换为UTC格式

2024-05-21 06:03:51 发布

您现在位置:Python中文网/ 问答频道 /正文

from django.utils import timezone
time_zone = timezone.get_current_timezone_name() # Gives 'Asia/Kolkata'
date_time = datetime.time(12,30,tzinfo=pytz.timezone(str(time_zone)))

现在我需要将这一次转换为UTC格式并将其保存在Django模型中。我不能使用date_time.astimezone(pytz.timezone('UTC'))。如何将时间转换为UTC。也回到“时区”。

这是一个用户在文本框中键入时间的用例,我们需要以UTC格式保存时间。每个用户还将从Djangotimezone模块中选择自己的时区。

一旦用户请求返回保存的时间,则必须在选定的时区向他显示该时间。


Tags: django用户fromimportzonegetdatetime
2条回答

使用完整的对象(例如:

import datetime
import pytz

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

# get naive date
date = datetime.datetime.now().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()

print(date_time)
print(utc_date_time)
print(utc_time)

收益率:

2014-07-13 12:30:00+05:30
2014-07-13 07:00:00+00:00
07:00:00

对我来说现在。

在settings.py中将时区设置为UTC。获取特定格式的时间和时区的用户输入。假设您得到的用户时间为“Jul-7-2014 12:35PM:30”(考虑在html中使用日期输入)。

from datetime import datetime, timedelta

// convert the time to standard format
user_date = datetime.strptime('Jul-7-2014 12:35PM:30', '%b-%d-%Y %I:%M%p:%S')
user_date_string = user_date.strftime('%Y-%m-%d %H:%M:%S')
// save the time to model with users timezone

// now when user asks back for his time, add the timezone with timedelta
user_date = datetime.strptime(user_date_string, '%Y-%m-%d %H:%M:%S') 
user_date = user_date + timedelta(hours = 5, minutes = 30)
// finally display it
print user_data.strftime('%Y-%m-%d %H:%M:%S')

*这不考虑django inbuild datetime函数,该函数返回datetime模型字段的datetime对象。如果实现的话会更简单

相关问题 更多 >