Python 如何将日期时间增加一天?
如何增加日期时间的天数Python 如何将日期时间增加一天?,python,datetime,Python,Datetime,如何增加日期时间的天数 for i in range(1, 35) date = datetime.datetime(2003, 8, i) print(date) 但我需要正确地度过几个月和几年?有什么想法吗?可以使用timedelta对象实现日期递增: date = datetime.datetime(2003,8,1,12,4,5) for i in range(5): date += datetime.timedelta(days=1) print(d
for i in range(1, 35)
date = datetime.datetime(2003, 8, i)
print(date)
但我需要正确地度过几个月和几年?有什么想法吗?可以使用timedelta对象实现日期递增:
date = datetime.datetime(2003,8,1,12,4,5)
for i in range(5):
date += datetime.timedelta(days=1)
print(date)
import datetime
datetime.datetime.now() + datetime.timedelta(days=1)
在Python文档中查找timedelta对象:这里是另一种使用dateutil的relativedelta添加日期天数的方法
from datetime import datetime
from dateutil.relativedelta import relativedelta
print 'Today: ',datetime.now().strftime('%d/%m/%Y %H:%M:%S')
date_after_month = datetime.now()+ relativedelta(day=1)
print 'After a Days:', date_after_month.strftime('%d/%m/%Y %H:%M:%S')
输出:
今天:25/06/2015 20:41:44
一天后:2015年6月1日20:41:44
所有的当前答案在某些情况下是错误的,因为它们不考虑时区改变相对于UTC的偏移量。因此,在某些情况下,添加24小时与添加日历日不同 提议的解决办法 以下解决方案适用于萨摩亚,并保持本地时间恒定
def add_day(today):
"""
Add a day to the current day.
This takes care of historic offset changes and DST.
Parameters
----------
today : timezone-aware datetime object
Returns
-------
tomorrow : timezone-aware datetime object
"""
today_utc = today.astimezone(datetime.timezone.utc)
tz = today.tzinfo
tomorrow_utc = today_utc + datetime.timedelta(days=1)
tomorrow_utc_tz = tomorrow_utc.astimezone(tz)
tomorrow_utc_tz = tomorrow_utc_tz.replace(hour=today.hour,
minute=today.minute,
second=today.second)
return tomorrow_utc_tz
测试代码
您还可以导入timedelta,使代码更清晰
from datetime import datetime, timedelta
date = datetime.now() + timedelta(seconds=[delta_value])
然后将日期转换为字符串
date = date.strftime('%Y-%m-%d %H:%M:%S')
Python一行是
date = (datetime.now() + timedelta(seconds=[delta_value])).strftime('%Y-%m-%d %H:%M:%S')
完全没有库的简短解决方案。:)
确保“字符串d”的格式实际上是
%m/%d/%Y
,这样在从一个月过渡到下一个月时就不会出现问题。这对我来说是一个简单的解决方案:
从datetime导入timedelta,datetime
今天=datetime.today().strftime(“%Y-%m-%d”)
明天=datetime.today()+timedelta(1)
最简单解
为什么你要用它来代替stdlib?@J.F.Sebastian的
timedelta()
,只是为了分享另一种可能的增加白天的方法。如果没有优势,我认为它不会增加价值。如果你需要考虑夏令时;它更为复杂,例如,请看其他答案是否完全错误,它们在使用UTC或naive(tzinfo==None
)日期时间时完全正确。如果将d
设置为8/31/18
,则返回8/32/18
。如果您将年份从18
更改,它只会中断。这不会直接回答OP问题,因为它假设today()
,并且不如公认的答案好,因为它假设默认增量单位为天
@MarkHu我不认为我的答案应该被接受。但是你能详细说明一下今天的假设是什么吗()以及为什么这是一个不好的假设?这个问题不是要问几天吗?被接受的答案是否更一般。OP询问如何找到任意日期后的第二天,而不是今天。您的示例代码将名为的变量分配为字符串,但从未使用过它。更好:date=datetime.today()
2。您的最后一行硬编码为today()
,并假设timedelta
的第一个参数是days
(这恰好是正确的,但为什么不为清楚起见而命名呢?)更好:laterDate=date+timedelta(days=1)
\IMHO:)
date = date.strftime('%Y-%m-%d %H:%M:%S')
date = (datetime.now() + timedelta(seconds=[delta_value])).strftime('%Y-%m-%d %H:%M:%S')
d = "8/16/18"
day_value = d[(d.find('/')+1):d.find('/18')]
tomorrow = f"{d[0:d.find('/')]}/{int(day_value)+1}{d[d.find('/18'):len(d)]}".format()
print(tomorrow)
# 8/17/18
from datetime import timedelta, datetime
date = datetime(2003,8,1,12,4,5)
for i in range(5):
date += timedelta(days=1)
print(date)