Python日期时间减去日期奇数

Python日期时间减去日期奇数,python,datetime,date,timedelta,Python,Datetime,Date,Timedelta,我创建了一个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 这是正确的。到目前为止,我还没有弄清楚这段时间之间的区别。如果重要的话,我会使用时区朴素的

我创建了一个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

这是正确的。到目前为止,我还没有弄清楚这段时间之间的区别。如果重要的话,我会使用时区朴素的datetime对象。我想知道是什么原因导致结果字符串日期发生变化

非常感谢

编辑:(根据以下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') 

但同样的结果。。。这就是为什么我认为它与时区也没有太大关系。但同时也不知道还能去哪里看。

你住在美国的某个地方吗?这里的时区大约比UTC晚6-8小时,这是UTC午夜的时间

datetime.datetime.now()返回什么

如果您想获取真实的本地时间,请使用此选项(用您的时区替换
“America/New_York”
):


从午夜到午夜,它应该返回相同的正确值。

不幸的是,Python不支持DST

即使pytz也不完美,但可以让它与黑客一起工作


您必须决定从10点、下午1点减去2天意味着什么,可以是2个日历天,也可以是48小时或172800秒。

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”),但结果相同。。。这就是为什么我很困惑的原因。这可能是上面一行中的isdst=真吗?感谢您的回复。奥地利的DST问题始终在UTC以外的两个小时内,因此这不是明显的美国时区(6-8小时)的问题。
from datetime import datetime, timedelta
import pytz

now = datetime.datetime.now(pytz.timezone("America/New_York"))
dt = (now - timedelta(days=13)).strftime('%Y-%m-%d')