我有一个看似非常容易的问题,但我无法弄明白。
我想实现以下目标: Time_as_string - time_now =分钟,直到时间为字符串。
我从网站上抽出时间作为字符串,例如:'15:30'
。
我想从中减去当前时间以显示多少分钟 留下直到刮掉的时间字符串。
我尝试了许多内容,例如strftime()
,转换为unix时间戳,google搜索解决方案等。
我可以通过strftime()
从字符串中创建一个时间对象,但我无法从当前时间中减去它。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
from datetime import datetime
s = "15:30"
t1 = datetime.strptime(s,"%H:%M")
diff = t1 - datetime.strptime(datetime.now().strftime("%H:%M"),"%H:%M")
print(diff.total_seconds() / 60)
94.0
答案 1 :(得分:0)
如果'15:30'
属于今天:
#!/usr/bin/env python3
from datetime import datetime, timedelta
now = datetime.now()
then = datetime.combine(now, datetime.strptime('15:30', '%H:%M').time())
minutes = (then - now) // timedelta(minutes=1)
如果从现在到现在可能有午夜,即明天是then
;你可以考虑一个负面差异(如果then
似乎在过去相对于now
)作为一个指标:
while then < now:
then += timedelta(days=1)
minutes = (then - now) // timedelta(minutes=1)
在较旧的Python版本上,(then - now) // timedelta(minutes=1)
无效,您可以使用(then - now).total_seconds() // 60
代替。
代码假定本地时区的utc偏移量与now
和then
相同。请参阅more details on how to find the difference in the presence of different utc offsets in this answer。
答案 2 :(得分:-1)
最简单的方法可能是相互减去两个日期时间并使用total_seconds()
:
>>> d1 = datetime.datetime(2000, 1, 1, 20, 00)
>>> d2 = datetime.datetime(2000, 1, 1, 16, 30)
>>> (d1 - d2).total_seconds()
12600.0
请注意,如果时间位于不同的时区(我刚刚选择2000年1月1日使其成为日期时间),这将无效。否则,在相同的时区(或UTC)中构造两个日期时间,减去它们并再次使用total_seconds()
以获得差异(剩余时间),以秒为单位。