如何使特定日期的年份早于当前日期?

时间:2020-02-05 16:29:46

标签: python datetime

我想找出去年四月的日期。我想将代码从4月1日开始运行到当前日期。因此,如果我在2020年2月运行报表,则开始日期应为2019年4月1日。

如何在Python中执行此操作?现在,我只是得到了当前的年份,这是不正确的方法,因为它将导致错误,因为它将要求报告从2020年4月1日到2020年2月5日运行,这没有任何意义。

"REPORT_for_{}-04-01_{}.xlsx".format(datetime.today().strftime('%Y'),
                                     datetime.today().strftime('%Y-%m-%d'))

2 个答案:

答案 0 :(得分:1)

这样,您将不会在去年4月之前获得去年4月的收入,而在4月之后则不会获得今年4月的收入。


today = datetime.today()

april_date = datetime(today.year, 4, 1)

if april_date > today:
   april_date = datetime(today.year -1, 4, 1)


这是您的报告的唯一证明。这很丑陋,我不推荐。一个班轮并不总是那么好。

"REPORT_for_{}-04-01_{}.xlsx".format(datetime.today().year-1 if datetime.today().month < 4 else datetime.today().year, datetime.today().strftime('%Y-%m-%d'))

另一种选择是:

year = datetime.today().year-1 if datetime.today().month < 4 else datetime.today().year
"REPORT_for_{}-04-01_{}.xlsx".format(year, datetime.today().strftime('%Y-%m-%d'))

甚至更好:

today =  datetime.today()
year = today.year-1 if today.month < 4 else today.year
"REPORT_for_{}-04-01_{}.xlsx".format(year, today.strftime('%Y-%m-%d'))

答案 1 :(得分:0)

使用datetime.year

"REPORT_for_{}-04-01_{}.xlsx".format(datetime.today().year-1, datetime.today().strftime('%Y-%m-%d'))
# Output: 'REPORT_for_2019-04-01_2020-02-05.xlsx'