Python比较不同的时间值以获取时间增量(以分钟为单位)

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

我试图从两个不同的时间值中得到时间增量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.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()