Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将日期时间增加一天?_Python_Datetime - Fatal编程技术网

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)