我有一个类似的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'