【问题标题】:Print date of 1 month ago python打印 1 个月前的日期 python
【发布时间】:2021-06-11 00:17:30
【问题描述】:

问题:

我正在尝试打印一个月前的日期。所以结果不是:

>>> 2021-03-12

它会在这个地方

>>> 2021-02-12

这是我的代码:

from datetime import date
import datetime
from email.utils import formatdate

now = formatdate(timeval=None, localtime=False, usegmt=True)
tday = date.today()

print(tday)

我见过很多不同的例子,但它们都改变了我已经拥有的日期结构的格式。

【问题讨论】:

标签: python datetime variables formatdatetime


【解决方案1】:
from datetime import datetime 
from dateutil.relativedelta import relativedelta 

now = datetime.now()
last_month_date = now + relativedelta(months=-1)
last_month_date=last_month_date.split(" ")[0]

使用 dateutil,因为它具有改进的增量

【讨论】:

  • 这与我需要的格式不同。我需要2021-02-12,你的脚本也给了我时间,而我不需要2021-02-12 17:31:09.836329。无论如何只有`2021-02-12`?
  • 默认格式是 ISO,精确到几分之一秒。您可以使用.isoformat() 方法对其进行修改,但只需要几个小时,如果您只需要几天,则将其转换为last_month_date.date() 中的日期。
  • @JohnBayko 感谢您的解释,因为这有助于我理解格式的默认设置为何如此。我将在我的笔记中标记它以备将来使用。 (相信我,我会用这个。)再次感谢约翰。
【解决方案2】:

添加到@chess_lover_6

from datetime import datetime 
from dateutil.relativedelta import relativedelta 

now = datetime.now()
last_month_date = now + relativedelta(months=-1)
last_month_date.strftime('%Y-%m-%d')

你会得到2021-02-12

【讨论】:

  • 这成功了!我必须将最后一行设为像 lm = last_month_date.strftime('%Y-%m-%d') 然后 print(lm) 这样的变量,但这对我完全有用!!!非常感谢!!!!!!
猜你喜欢
  • 1970-01-01
  • 2021-07-13
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多