1 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
首先,您需要使用模塊將時(shí)間從字符串轉(zhuǎn)換為時(shí)間戳對(duì)象。之后,您可以每天走一步并計(jì)算一天中剩余的小時(shí)數(shù)。最后添加一個(gè)檢查日期是否與結(jié)束日期相同,請(qǐng)使用結(jié)束日期中的小時(shí)數(shù)作為時(shí)差。datetime
從字符串中讀取日期時(shí)間需要使用日期格式語(yǔ)法。基本上,百分號(hào)后跟字母用于表示日期時(shí)間字符串的標(biāo)準(zhǔn)部分。即 是 24 小時(shí)格式的小時(shí),是年,是月,是分鐘。破折號(hào),空格,斜杠,冒號(hào)和點(diǎn)也需要與字符串中的內(nèi)容相匹配。有關(guān)完整列表,請(qǐng)參閱此站點(diǎn):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)]
下面是包含日期和時(shí)間的元組列表。如果您希望它作為字符串列表,則可以通過(guò)字符串格式化程序傳遞它。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']
添加回答
舉報(bào)