为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

烙印99 2022-08-25 16:25:18
我有开始日期和结束日期,如何计算两个日期之间每天的小时数?start date 2020-01-01 10:00end date 2020-01-04 15:00开始日期和结束日期之间的小时数总和示例:2020-01-01 14 hours2020-01-02 24 hours2020-01-03 24 hours2020-01-04 15 hours
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

首先,您需要使用模块将时间从字符串转换为时间戳对象。之后,您可以每天走一步并计算一天中剩余的小时数。最后添加一个检查日期是否与结束日期相同,请使用结束日期中的小时数作为时差。datetime


从字符串中读取日期时间需要使用日期格式语法。基本上,百分号后跟字母用于表示日期时间字符串的标准部分。即 是 24 小时格式的小时,是年,是月,是分钟。破折号,空格,斜杠,冒号和点也需要与字符串中的内容相匹配。有关完整列表,请参阅此站点:https://strftime.org/%H%Y%m%M


import datetime as dt


start_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 = start

for 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)]

下面是包含日期和时间的元组列表。如果您希望它作为字符串列表,则可以通过字符串格式化程序传递它。hours


hours_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']


查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信