2

对python非常陌生,请原谅菜鸟问题:

我有一个代表日期的数字,例如:

date = 20121228  

(代表2012年12月28日)

如何在 python 中将该日期增加 5 天,所以我最终得到一个新的(正确的)数字,代表日期

date = 20130102

我不想要:

date = 20121233

更新:当我尝试使用时datetime.strptime,出现此错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: type object 'datetime.datetime' has no attribute 'strptime'
4

3 回答 3

6

试试这个:

date = 20121228
from datetime import datetime, timedelta
dt = datetime.strptime(str(date), "%Y%m%d").date() + timedelta(days=5)
print datetime.strftime(dt, "%Y%m%d")
于 2013-02-06T21:14:08.650 回答
1

将其解析为一个datetime.date()对象,添加 5 天,然后重新格式化回您的号码:

from datetime import datetime, timedelta

dt = datetime.strptime(str(date), '%Y%m%d').date()
dt += timedelta(days=5)
date = int(dt.strftime('%Y%m%d'))

示范:

>>> from datetime import datetime, timedelta
>>> date = 20121228
>>> dt = datetime.strptime(str(date), '%Y%m%d').date()
>>> dt += timedelta(days=5)
>>> int(dt.strftime('%Y%m%d'))
20130102

对于 Python 2.5 之前的 Python 版本,您需要使用以下time.strptime()版本:

import time
from datetime import datetime, timedelta
dt = datetime(*(time.strptime(str(date), '%Y%m%d')[:6]))
dt += timedelta(days=5)
date = int(dt.strftime('%Y%m%d'))
于 2013-02-06T21:14:45.867 回答
0

您需要先将日期转换为字符串。然后使用timedelta对象将天数添加到datetime对象中。

from datetime import datetime, timedelta

d = datetime.strptime(str(20121228), "%Y%m%d")
print (d + timedelta(days=5)).strftime("%Y%m%d")
于 2013-02-06T21:14:32.763 回答