我创建了一个 datetime 对象,从中减去 13 天,如下所示:
(date.today()-timedelta(days=13)).strftime('%Y-%m-%d')
当我在早上 6 点和早上 8 点 30 分执行代码时,就会发生奇怪的事情。在早上 6 点,结果字符串返回为(如果今天是 2012-02-29):
2012-02-15
这是当前的14天前!但是,在上午 8:30 运行同一行,结果字符串返回为:
2012-02-16
然后正确。到目前为止,我还无法弄清楚这小段时间之间有什么区别。如果这很重要,我会使用时区天真的日期时间对象。我想知道什么可能导致结果字符串日期发生这种变化。
非常感谢。
编辑:(基于下面eumiro的建议)
datetime.datetime.now() 返回:
>>> datetime.datetime(2012, 2, 29, 10, 46, 20, 659862)
服务器和运行代码行的 django 应用程序中的时区是 Europe/Vienna。
我还尝试运行与您建议的行类似的行:
(pytz.timezone(settings.TIME_ZONE).localize(datetime.now(), is_dst=True) - \
timedelta(days=13)).strftime('%Y-%m-%d')
但是结果相同......这就是为什么我认为我认为它与时区也没有太大关系。但同时不知道还能去哪里看。