这应该很简单,但我无法得到正确的语法。所以,我有一个参数字典如下 -
paramDict = {
StartPostingDateFilter": {
"msgPrompt": "Start date",
"dataType": "datetime",
"tableField": [{"table":"TableName",
"field":"ColumnName"}],
"value": ["2006-01-01"]
}
}
StartPostingDateFilter = paramDict['StartPriorDateFilter']['value'][0]
现在,我想从“StartPriorDateFilter”用户提供的日期值中减去一年。如果是闰年,我该如何处理?我想实现以下目标 -
If, StartPostingDateFilter = '2006-01-01'
Then create new variable, NewStartPostingDateFilter = '2005-01-01'
谢谢。
最佳答案
您可以使用 dateutil:
from dateutil.relativedelta import relativedelta
from dateutil import parser
d = parser.parse(StartPostingDateFilter)
print((d - relativedelta(years=1)).date())
2005-01-01
您还可以使用日期时间并替换捕获 feb 29th 返回年份 - 1 和 feb 28th(如果是):
d = datetime.strptime(StartPostingDateFilter, "%Y-%m-%d")
sub = d.replace(year=d.year - 1) if (d.month != 2 and d.day) != 29 else datetime(d.year-1, 2, 28)
关于python - 将一年与数据值分开;照顾闰年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31303871/