在我的django应用程序中,我面对两个日期时间对象(self.dueDate是日期对象):
ref_time = timezone.localtime(timezone.now(), timezone.get_default_timezone() )
threshold = datetime.combine( self.dueDate,
time(tzinfo=timezone.get_default_timezone()))
- timedelta(days = 1)
我将它们构建为具有相同的时区(它们具有相同的时区),但它们最终会有两个不同的UTC偏移量。
>>>print threshold, threshold.tzinfo
2015-03-13 12:08:00+00:50 Europe/Rome
>>>print ref_time, ref_time.tzinfo
2015-03-13 12:48:29.372984+01:00 Europe/Rome
为什么会这样?如何才能为同一个tz提供两种不同的偏移量? (为什么那会是50分钟?)
答案 0 :(得分:0)
时区在不同时间可能具有不同的utc偏移。 time(tzinfo=tz)
使用默认的utc偏移量,例如,对于最有可能不您想要的最早日期。见:
要将tz
时区中的当前时间作为有意识的日期时间对象:
from datetime import datetime
ref_time = datetime.now(tz)
要将self.dueDate
前一天的午夜作为有意识的日期时间对象:
from datetime import time as datetime_time, timedelta
from django.utils import timezone
midnight_yesterday = datetime.combine(self.dueDate, datetime_time()) - timedelta(1)
threshold = timezone.make_aware(midnight_yesterday)
注意:threshold
可能多于/少于24小时前,请参阅How can I subtract a day from a python date?。