Python比较不同的时间值以获取时间增量(以分钟为单位)
我试图从两个不同的时间值中得到时间增量I分钟 时间1=2020-11-28 10:31:12Z 时间2=2020-11-28009:10:23.203+0000 然后我会做一个条件:若时间差大于x分钟,运行代码 任何人都有解决办法。 我尝试过使用datetime.datetime.StrTime(),但无法使用相同的格式Python比较不同的时间值以获取时间增量(以分钟为单位),python,time,Python,Time,我试图从两个不同的时间值中得到时间增量I分钟 时间1=2020-11-28 10:31:12Z 时间2=2020-11-28009:10:23.203+0000 然后我会做一个条件:若时间差大于x分钟,运行代码 任何人都有解决办法。 我尝试过使用datetime.datetime.StrTime(),但无法使用相同的格式 谢谢好吧,假设你不需要分秒必争的时间,你可以这样做: time1 = '2020-11-28T10:31:12Z' time2 = '2020-11-28T09:10:23.2
谢谢好吧,假设你不需要分秒必争的时间,你可以这样做:
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(....)
使用日期解析器让它计算出日期格式 代码
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)
试验
时间不统一,因此您必须使它们相同才能使用strtime。为了准确起见,我更喜欢转换成秒,然后你也可以在以后的阶段比较秒,分钟或小时,如果你需要的话
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()
导入日期时间
时间1='2020-11-28T10:31:12Z'
时间2='2020-11-28009:10:23.203+0000'
def minutes_diff():
#使时间统一,这样就可以使用strtime
date\u time1=datetime.datetime.strtime(time1[:-1],%Y-%m-%dT%H:%m:%S”)
date\u time2=datetime.datetime.strtime(time2[:-9],%Y-%m-%dT%H:%m:%S”)
#转换为秒以获得准确度
a_timedelta=date_time1-datetime.datetime(1900,1,1)
b_timedelta=date_time2-datetime.datetime(1900,1,1)
秒\u时间\u a=a\u时间增量。总\u秒()
秒\u时间\u b=b\u时间增量。总秒数()
#几分钟内从对方身上取一个
时间(以分钟为单位)=(秒时间a-秒时间b)/60
#然后决定怎么处理它
如果时间(单位:分钟)<60:1小时
打印('不到一小时做某事')
其他:
打印('超过一小时不做任何事情')
会议记录
DARRYL、JOHNNY和MARCIN,谢谢你们的解决方案,问题解决了
安迪
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()