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']
添加回答
举报