计算上一年的同月

  • 本文关键字:上一年 计算 python date
  • 更新时间 :
  • 英文 :


我有一个类似的date对象

Date = '202011'

这是yyyymm格式。

我想得到同一个月,但n年前。例如,如果n = 2,那么我应该得到'201811'

有什么功能可以实现这一点吗?

您可以使用datetime模块和dateutil库来完成以下操作:

import datetime
from dateutil.relativedelta import relativedelta
fmt = '%Y%m'
date_string = '202011'
n = 2
# Parse `date_string` into a date object.
date = datetime.datetime.strptime(date_string, fmt).date()
# 2020-11-01
# Subtract `n` years.
new_date = date + relativedelta(years=-n)
# Output in the same format.
print(new_date.strftime(fmt))  # -> 201811

相关问题:

  • Python日期字符串到日期对象
  • 如何使用datetime Python模块计算距离当前日期六个月的日期

只需将其解析为Pythondatetime对象并使用其replace()方法。

from datetime import datetime
years_ago = 2
date = datetime.strptime('202011','%Y%m')
date = date.replace(year=date.year-years_ago)
# This is the modified date object
print(date)
# Formatted back in your format
print(date.strftime('%Y%m'))

此解决方案不需要任何外部依赖

这里有一个与其他类似的解决方案,但只使用标准库,并作为一个函数。

def subtract_years(date_string: str, diff: int) -> str:
dt = datetime.strptime(date_string, "%Y%m")
new_dt = dt.replace(year=dt.year - diff)
return new_dt.strftime("%Y%m")
# ❯ subtract_years("202011", 2)
# '201811'

最新更新