[英]Python comparing to different time values to get time delta in minutes
我试图从两个不同的时间值中获取时间增量 i 分钟。
时间1 = 2020-11-28T10:31:12Z 时间2 = 2020-11-28T09:10:23.203+0000
然后我会让 i 条件:如果时差大于 x 分钟,运行代码...
任何人都有解决方案。 我尝试使用 datetime.datetime.strptime() 但无法以相同的格式获取它们。
谢谢
使用日期解析器让它找出日期格式
代码
from dateutil.parser import parse
def time_difference(time1, time2):
# Parse strings into datetime objects
dt1 = parse(time1)
dt2 = parse(time2)
# Get timedelta object
c = dt1 - dt2
# Difference in minutes
return (c.total_seconds()/60)
测试
time1 = "2020-11-28T10:31:12Z"
time2 = "2020-11-28T09:10:23.203+0000"
print(time_difference(time1, time2))
# Output: 80.81328333333333
假设你不需要分秒,你可以做这样的事情:
time1 = '2020-11-28T10:31:12Z'
time2 = '2020-11-28T09:10:23.203+0000'
import time
import datetime
def get_timestamp(time_str):
time_splited = time_str.split('T')
time_str_formatted = ' '.join([time_splited[0],time_splited[1][:8]])
return time.mktime(datetime.datetime.strptime(time_str_formatted,"%Y-%m-%d %H:%M:%S").timetuple())
print(get_timestamp(time1))
print(get_timestamp(time2))
将两次重新格式化为相同的时间格式。 那么您的情况将如下所示:
if abs(get_timestamp(time1) -get_timestamp(time2) ) > x*60:
do_something(....)
时间不统一,因此您必须使它们相同才能使用 strptime。 为了准确起见,我更喜欢将其转换为秒,如果需要,您还可以在稍后阶段比较秒、分钟或小时。
import datetime
time1 = '2020-11-28T10:31:12Z'
time2 = '2020-11-28T09:10:23.203+0000'
def minutes_diff():
#Make the times uniform so you can then use strptime
date_time1 = datetime.datetime.strptime(time1[:-1], "%Y-%m-%dT%H:%M:%S")
date_time2 = datetime.datetime.strptime(time2[:-9], "%Y-%m-%dT%H:%M:%S")
#Convert to seconds for accuracy
a_timedelta = date_time1 - datetime.datetime(1900, 1, 1)
b_timedelta = date_time2 - datetime.datetime(1900, 1, 1)
seconds_time_a = a_timedelta.total_seconds()
seconds_time_b = b_timedelta.total_seconds()
#Take one from each other for minutes
time_in_minutes = (seconds_time_a - seconds_time_b) / 60
#Then decide what to do with it
if time_in_minutes < 60: # 1 hour
print('Less than an hours do something')
else:
print('More than an hour do nothing')
minutes_diff()
DARRYL、JOHNNY 和 MARCIN,感谢您的解决方案,问题解决了!!
安迪
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.