python - 将一年与数据值分开;照顾闰年

标签 python python-2.7 pandas

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

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/

相关文章:

python - Python 的 sys.path 是从哪里初始化的?

python - 在 Ubuntu 服务器上安装软件包时出现内存不足问题

python - Python中将数组转换为二维矩阵时出错

python - 在 Python 中获取子字符串

python - 删除生成数据帧的 groupby-apply 函数的无关索引

python - Pandas:如何计算一列相对于另一列的百分比?

python - 使用 python 2.7(通过 np.array.astype 函数)将 txt 列数据(字符串)转换为 int

python - 如何将特定变量从一个类继承到另一个类?

python - 如果列表中包含字符串,则替换列表中的元素

python - 如何使用 .apply() 将一列字典合并为一个字典?