Python日期时间减去日期奇数
我创建了一个datetime对象,从中减去13天,如下所示: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 这是正确的。到目前为止,我还没有弄清楚这段时间之间的区别。如果重要的话,我会使用时区朴素的
(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')