【问题标题】:how to check if two timestamps are in range of allowable error [duplicate]如何检查两个时间戳是否在允许的错误范围内[重复]
【发布时间】:2020-09-06 14:16:52
【问题描述】:

我想比较两个时间戳,看看是否在 3 秒内。第一种格式类似于13:15:19.654,第二种格式类似于1:15:20 PM。我该如何实施?

例如:

13:15:19.6541:15:20 PM 返回 True

13:15:19.6541:15:25 PM 返回 False

注意,两个时间戳都是来自不同文件的字符串。 这是我的代码:

deviation = 3
timestamp_a = '13:15:19.654'
timestamp_b = '1:15:25 PM'

hour_a = timestamp_a.split(':')[0]
hour_b = timestamp_b.split(':')[0]
if 'PM' in timestamp_b:
  hour_b = str(int(hour_b) + 12)

minute_a = timestamp_a.split(':')[1]
minute_b = timestamp_b.split(':')[1]

second_a = timestamp_a.split(':')[2].split('.')[0]
second_b = timestamp_b.split(':')[2].split()[0]

time_a = int(hour_a) * 3600 + int(minute_a) * 60 + int(second_a)
time_b = int(hour_b) * 3600 + int(minute_b) * 60 + int(second_b)

return abs(time_a - time_b) < deviation

【问题讨论】:

  • 贴出你试过的代码
  • 您的值在stringdatetime 中吗?
  • @komatiraju032 我已经更新了代码。谢谢。
  • @CodePope 他们的类型是字符串。谢谢。

标签: python


【解决方案1】:

您可以将它们转换为datetime,然后计算差异:

from datetime import datetime
timestamp_a = '13:15:19.654'
timestamp_b = '1:15:25 PM'

first_datetime = datetime.strptime(timestamp_a, '%H:%M:%S.%f')
second_datetime = datetime.strptime(timestamp_b, "%I:%M:%S %p")
if abs((first_datetime-second_datetime).total_seconds()) < 3:
  print('Diff less than 3')
  # do something
else:
  print('Diff not less than 3')
  # do something else

【讨论】:

    【解决方案2】:

    将字符串转换为日期时间对象并从那里开始工作:

    import datetime
    
    time_a = datetime.datetime.strptime('13:15:19.654', '%H:%M:%S.%f')
    time_b = datetime.datetime.strptime('1:15:20 PM', '%I:%M:%S %p')
    
    delta = time_a - time_b
    
    time_diff = abs(delta.total_seconds())
    print('Difference in seconds: ', time_diff)
    
    threshold = 3.0
    if time_diff <= threshold:
        print('True')
    else:
        print('False')
    

    输出:

    Difference in seconds:  0.346
    True
    

    更多日期时间格式指令check here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      相关资源
      最近更新 更多