【问题描述】如何返回一段时间以前的日期呢?
比如,今天是2021-10-23,如何返回30天前的日期?
【小千解答】借助datetime模块的timedelta类。
代码如下:
import datetime as dt jintian = dt.date.today() rq = jintian - dt.timedelta(days=30) print(rq)
【知识拓展】
以上代码返回的日期是2021-09-23,那是不是可以考虑直接替换月份数字就行了呢?比如下面这样:
import datetime as dt jintian = dt.date.today() rq = jintian.replace(month=jintian.month-1) print(rq)
结果OK!当前是10月,月份替换成9,那如果今天是1月份的日期,则月份改成12,同时年份数-1,代码改成如下:
import datetime as dt jintian = dt.date.today() if jintian.month > 1: rq = jintian.replace(month=jintian.month-1) else: rq = jintian.replace(jintian.month-1,12) print(rq)
结果OK?!
其实这种思路欠妥,因为每个月的天数不一样,如果按整月反推,3月31日往前推一个月是2月的哪天呢?显然不够严谨,这种思路只适合日期的天数不是29、30、31的场景。