Python:获取“三年前今天”的日期时间
在Python中,我怎么才能得到一个表示“今天三年前”的日期时间对象呢?
更新:顺便说一下,我对准确性不是特别在意……比如今天是2月29日,我不太在乎答案是给我2月28日还是3月1日。在这种情况下,简洁性比灵活性更重要。
7 个回答
32
当然,直接减去365乘以3天是错误的,因为这样做会忽略掉闰年的情况,而在大约一半的时间里,我们会遇到闰年。
dt = datetime.now()
dt = dt.replace(year=dt.year-3)
# datetime.datetime(2008, 3, 1, 13, 2, 36, 274276)
编辑:为了正确处理闰年的问题,
def subtract_years(dt, years):
try:
dt = dt.replace(year=dt.year-years)
except ValueError:
dt = dt.replace(year=dt.year-years, day=dt.day-1)
return dt
206
如果你想要准确的日期计算,可以使用 dateutil 这个模块来计算相对日期。
from datetime import datetime
from dateutil.relativedelta import relativedelta
three_yrs_ago = datetime.now() - relativedelta(years=3)
132
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当某个变量的值达到一定的标准时,我们就希望程序能做出反应。这种情况通常会用到“条件语句”。
条件语句就像是一个判断的开关,程序会根据你设定的条件来决定接下来要做什么。如果条件成立,程序就会执行某段代码;如果条件不成立,程序就会跳过这段代码,继续执行后面的内容。
举个简单的例子,假设你在写一个程序来判断一个人的年龄。如果这个人年龄大于18岁,程序就会显示“你可以投票”;如果小于等于18岁,程序就会显示“你还不能投票”。这里的“年龄大于18岁”就是我们的条件,程序会根据这个条件来决定显示什么信息。
这样一来,条件语句就能帮助我们让程序变得更智能,能够根据不同的情况做出不同的反应。
import datetime
datetime.datetime.now() - datetime.timedelta(days=3*365)