Python计算Unix时间戳与给定历元值的差异(以分钟为单位)
我想从以下解决方案中了解计算当前Linux时间戳与给定历元值(例如从ETL数据中提取的“1512082800”)之间的时间差(以分钟为单位)的最佳方法:Python计算Unix时间戳与给定历元值的差异(以分钟为单位),python,datetime,Python,Datetime,我想从以下解决方案中了解计算当前Linux时间戳与给定历元值(例如从ETL数据中提取的“1512082800”)之间的时间差(以分钟为单位)的最佳方法: 这里最好使用time.time(),因为这会给你从纪元开始的秒数,你可以直接计算所需的增量,以分钟为单位,如(time.time()-timestamp)/60 Timeit比较与将当前时间戳作为datetime.datetime.utcnow()获取的比较: 你不能使用time.time()?像dt_min=(time.time()-ep
这里最好使用
time.time()
,因为这会给你从纪元开始的秒数,你可以直接计算所需的增量,以分钟为单位,如(time.time()-timestamp)/60
Timeit比较与将当前时间戳作为datetime.datetime.utcnow()获取的比较:
你不能使用time.time()
?像dt_min=(time.time()-epoch_value)/60
?@MrFuppes,是的,这也给出了结果,kudosusingtime.time()
在性能方面似乎也稍微好一点,请参见下面的小timeit比较。
old = datetime.datetime.fromtimestamp(float(epoch_value)) # eg: 1512082800
cur = datetime.datetime.utcnow()
print((cur - old).total_seconds() / 60) # difference between two Unix timestamps in minutes
fmt = '%Y-%m-%d %H:%M:%S'
cur = datetime.datetime.strptime(time.strftime(fmt), fmt)
epoch = datetime.datetime.fromtimestamp(float(1512082800)).strftime(fmt)
old = datetime.datetime.strptime(epoch, fmt)
old = time.mktime(old.timetuple())
cur = time.mktime(cur.timetuple())
# They are now in seconds, subtract and then divide by 60 to get minutes
print int(cur-old) / 60
import time
from datetime import datetime
%timeit (time.time() - 1512082800) / 60
221 ns ± 10.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
%timeit (datetime.utcnow().timestamp() - 1512082800) / 60
848 ns ± 14.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)