如何在两个datetime对象之间以分钟为单位区分时间?
当前回答
这将给出以秒为单位的差值(然后除以60得到分钟):
import time
import datetime
t_start = datetime.datetime.now()
time.sleep(10)
t_end = datetime.datetime.now()
elapsedTime = (t_end - t_start )
print(elapsedTime.total_seconds())
输出:
10.009222
在我看来,这是最简单的方法,您不需要担心精度或溢出问题。
例如,使用elapsedTime。秒你失去了很多精度(它返回一个整数)。同时,elapsedTime。正如这个答案所指出的,微秒的上限是10^6。因此,例如,对于10秒的sleep(), elapsedTime。微秒给出8325(这是错误的,应该是10,000,000左右)。
其他回答
使用divmod:
now = int(time.time()) # epoch seconds
then = now - 90000 # some time in the past
d = divmod(now-then,86400) # days
h = divmod(d[1],3600) # hours
m = divmod(h[1],60) # minutes
s = m[1] # seconds
print '%d days, %d hours, %d minutes, %d seconds' % (d[0],h[0],m[0],s)
这里有一个很容易概括或转化为函数的答案,它合理紧凑,易于遵循。
ts_start=datetime(2020, 12, 1, 3, 9, 45)
ts_end=datetime.now()
ts_diff=ts_end-ts_start
secs=ts_diff.total_seconds()
days,secs=divmod(secs,secs_per_day:=60*60*24)
hrs,secs=divmod(secs,secs_per_hr:=60*60)
mins,secs=divmod(secs,secs_per_min:=60)
secs=round(secs, 2)
answer='Duration={} days, {} hrs, {} mins and {} secs'.format(int(days),int(hrs),int(mins),secs)
print(answer)
它给出的答案是“持续时间=270天10小时32分42.13秒”
这是为了找出当前时间和上午9:30之间的差值
t=datetime.now()-datetime.now().replace(hour=9,minute=30)
>>> import datetime
>>> first_time = datetime.datetime.now()
>>> later_time = datetime.datetime.now()
>>> difference = later_time - first_time
datetime.timedelta(0, 8, 562000)
>>> seconds_in_day = 24 * 60 * 60
>>> divmod(difference.days * seconds_in_day + difference.seconds, 60)
(0, 8) # 0 minutes, 8 seconds
从第一个时间差中减去后面的时间= later_time - first_time创建一个只保存时间差的datetime对象。 在上面的例子中,它是0分钟,8秒和562000微秒。
你可能会发现这个快速的片段在不那么长的时间间隔里很有用:
from datetime import datetime as dttm
time_ago = dttm(2017, 3, 1, 1, 1, 1, 1348)
delta = dttm.now() - time_ago
days = delta.days # can be converted into years which complicates a bit…
hours, minutes, seconds = map(int, delta.__format__('').split('.')[0].split(' ')[-1].split(':'))
在Python v.3.8.6上测试
推荐文章
- Sql Server字符串到日期的转换
- 如何在Flask-SQLAlchemy中按id删除记录
- 在Python中插入列表的第一个位置
- Python Pandas只合并某些列
- 如何在一行中连接两个集而不使用“|”
- 从字符串中移除前缀
- 代码结束时发出警报
- 如何在Python中按字母顺序排序字符串中的字母
- 在matplotlib中将y轴标签添加到次要y轴
- 如何消除数独方块的凹凸缺陷?
- 为什么出现这个UnboundLocalError(闭包)?
- 使用Python请求的异步请求
- 如何检查一个对象是否是python中的生成器对象?
- 如何从Python包内读取(静态)文件?
- 如何计算一个逻辑sigmoid函数在Python?