Python将时间转换为UTC格式

时间:2014-07-12 06:18:00

标签: python django datetime timezone

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。另请回到' time_zone'。

这是用户在文本框中输入时间的用例,我们需要以UTC格式节省时间。每个用户还将从Django timezone模块中选择他自己的时区。

一旦用户请求退回保存的时间,就必须在他选择的时区内将其显示给他。

2 个答案:

答案 0 :(得分:14)

使用完整的datetime对象,这些事情总是更容易,例如:

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

现在对我来说。

答案 1 :(得分:-1)

在settings.py中将时区设置为UTC。以特定格式获取用户输入的时间和时区。假设您将用户时间设置为'Jul-7-2014 12:35 PM: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对象。如果实施它会更简单

相关问题