这应该很简单,但是我无法正确使用语法。所以,我有一个参数字典如下-

paramDict = {
StartPostingDateFilter": {
        "msgPrompt": "Start date",
        "dataType": "datetime",
        "tableField": [{"table":"TableName",
                        "field":"ColumnName"}],
        "value": ["2006-01-01"]
                         }
             }

StartPostingDateFilter = paramDict['StartPriorDateFilter']['value'][0]


现在,我想从“ StartPriorDateFilter”用户提供的日期值中减去一年。如果是a年,我该如何处理?我想实现以下目标-

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


您还可以使用datetime并替换返回年份的2月29日-1和2月28日(如果是):

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 - 与数据值分开一年;照顾of年,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31303871/

10-10 13:40