2016-04-14 104 views
3

在Python中,假设我的日期为2016年12月25日。如何在该日期创建中午时区的中午日期时间?在python中,如何从日期和时间创建可识别时区的日期时间?

如果它与Django的时区处理兼容,则为奖励分。

+0

的可能的复制[Django的:如何使DateTime对象知道在它被创建的时区(http://stackoverflow.com/questions/22108634/django-how-这是一个日期时间对象感知的时区 - 它是它创建的) – Sayse

+0

这是特定的从日期开始取得日期时间,而不是从先前存在的天真日期时间开始。 – seddonym

+0

你可以用'time(0,0)'将日期'合并'以得到天真的日期时间 –

回答

8

在纯Python,你可以使用第三方软件包pytz并指定时区(在这种情况下,“欧洲/伦敦):

from datetime import datetime, date, time 
import pytz 

date = date(2016, 12, 25) 
time = time(12, 0, 0, tzinfo=pytz.timezone('Europe/London')) 
aware_datetime = datetime.combine(date, time) 

如果你在Django这样做,你可以使用当前时区:

from datetime import datetime, date, time 
from django.utils import timezone 

date = date(2016, 12, 25) 
time = time(12, 0, 0, tzinfo=timezone.get_current_timezone()) 
aware_datetime = datetime.combine(date, time) 
+1

[使用'.localize()'方法用于具有不固定的utc偏移量的时区](http://stackoverflow.com /一个/4279分之36462784)。或'django.utils.timezone.make_aware()'。 – jfs

+0

如果已经创建了datetime/time对象,则使用:'date_object.replace(tzinfo = timezone.get_current_timezone())' – d345k0