从数据值中分离一年;照顾闰年

2024-09-28 01:27:29 发布

您现在位置:Python中文网/ 问答频道 /正文

这应该很简单,但我不能得到正确的语法。所以,我有一个参数字典如下-

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' 

谢谢


Tags: 参数datetimedate字典valuetable语法start
1条回答
网友
1楼 · 发布于 2024-09-28 01:27:29

您可以使用dateutil:

from dateutil.relativedelta import  relativedelta
from dateutil import parser
d = parser.parse(StartPostingDateFilter)
print((d - relativedelta(years=1)).date())
2005-01-01

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

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)

相关问题 更多 >

    热门问题