【发布时间】:2012-02-29 09:30:57
【问题描述】:
我创建了一个 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')
但结果相同...这就是为什么我认为它与时区也没有太大关系。但同时不知道还能去哪里看。
【问题讨论】:
标签: python datetime date timedelta