如何在Python中每天两个日期之间的时间相加?

我有开始日期和结束日期,如何计算两个日期之间每天的小时数?


start date 2020-01-01 10:00

end date 2020-01-04 15:00

开始日期和结束日期之间的小时数总和示例:


2020-01-01 14 hours

2020-01-02 24 hours

2020-01-03 24 hours

2020-01-04 15 hours


烙印99
浏览 201回答 1
1回答

青春有我

首先,您需要使用模块将时间从字符串转换为时间戳对象。之后,您可以每天走一步并计算一天中剩余的小时数。最后添加一个检查日期是否与结束日期相同,请使用结束日期中的小时数作为时差。datetime从字符串中读取日期时间需要使用日期格式语法。基本上,百分号后跟字母用于表示日期时间字符串的标准部分。即 是 24 小时格式的小时,是年,是月,是分钟。破折号,空格,斜杠,冒号和点也需要与字符串中的内容相匹配。有关完整列表,请参阅此站点:https://strftime.org/%H%Y%m%Mimport datetime as dtstart_date = '2020-01-01 10:00'end_date = '2020-01-04 15:00'start = dt.datetime.strptime(start_date, '%Y-%m-%d %H:%M')end = dt.datetime.strptime(end_date, '%Y-%m-%d %H:%M')def hours_left(ts):    return 24-(ts.hour + ts.minute / 60)hours = []day = startfor i in range(d.days + bool(d.seconds)):    if day.date() != end.date():        h = hours_left(day)    else:        h = end.hour + end.minute / 60    hours.append((day.date(), h))    day = day + dt.timedelta(hours=h)hours# returns:[(datetime.date(2020, 1, 1), 14.0), (datetime.date(2020, 1, 2), 24.0), (datetime.date(2020, 1, 3), 24.0), (datetime.date(2020, 1, 4), 15.0)]下面是包含日期和时间的元组列表。如果您希望它作为字符串列表,则可以通过字符串格式化程序传递它。hourshours_str = [f'{d.strftime("%Y-%m-%d")}  {h:.0f} hours' for d, h in hours]hours_str# returns['2020-01-01  14 hours', '2020-01-02  24 hours', '2020-01-03  24 hours', '2020-01-04  15 hours']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python