首页 > 解决方案 > datetime 与 date 的时间差为 0 秒

问题描述

我试图在 python 中获取两个日期之间的小时数,第一个是输入日期,第二个是来自 miniseed 文件名称的日期。

  dt = datetime.strptime("2019-04-15T00:37:00", '%Y-%m-%dT%H:%M:%S')
  //dt is the input date
  for filename in os.listdir('.'):
        if filename.endswith(".mseed"): 
            file_struct = filename.split('.')
            datetime_object = datetime.strptime(file_struct[0], '%Y%m%d%H%M%S') 
            hours = abs((dt- datetime_object).seconds)//3600
  
            print(dt, datetime_object, hours)
            continue
        else:
            continue

结果是:

(datetime.datetime(2019, 4, 15, 0, 37, 10), '20190405082044', 16)

(datetime.datetime(2019, 4, 15, 0, 37, 10), '20190405000000', 0)

(datetime.datetime(2019, 4, 15, 0, 37, 10), '20190405083710', 16)

看起来 20190405000000 有问题(他的日期时间 obj 是datetime.datetime(2019, 4, 5, 0, 0)

标签: python

解决方案


对于总经过的秒数,使用total_seconds而不是seconds

hours = abs((dt -datetime_object).total_seconds()) // 3600

请注意,这total_seconds是一种方法,因此是括号


推荐阅读