今天寫python時遇到時間格式的比較問題
已知的格式是
06/24/2021 15:47:01.491
時間比較的思路是,把數據轉換成時間戳比較:
第一步是把 06/24/2021 15:47:01.491 格式轉換稱 2021-06-24 15:47:01.490000
valid_time = '06/24/2021 15:47:01.490' d1 = datetime.datetime.strptime(valid_time,'%m/%d/%Y %H:%M:%S.%f') d2 = datetime.datetime.strptime(valid_time,'%m/%d/%Y %H:%M:%S.%f').strftime('%Y-%m-%d %H:%M:%S.%f') print(d1, type(d1)) print(d2, type(d2))
結果:
2021-06-24 15:47:01.490000 <class 'datetime.datetime'>
2021-06-24 15:47:01.490000 <class 'str'>
第二步是將 2021-06-24 15:47:01.490000 數據轉換成毫秒的時間戳
dd = datetime.datetime.strptime(valid_time,'%m/%d/%Y %H:%M:%S.%f') ts = int(time.mktime(dd.timetuple()) * 1000.0 + (dd.microsecond / 1000.0)) print(ts, type(ts))
結果:
1624520821490 <class 'int'>
如果是秒級的數據轉換成時間戳:
def get_time_stamp(valid_time): dd = datetime.datetime.strptime(valid_time, '%m/%d/%Y %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S') ts = int(time.mktime(time.strptime(dd, '%Y-%m-%d %H:%M:%S'))) print(ts) if __name__ == '__main__': get_time_stamp("06/24/2021 15:47:01")
結果:
2021-06-24 15:47:01 <class 'str'>
1624520821
第三步就是兩個毫秒級的時間戳進行比較
''' @description: 獲取時間的時間戳進行時間大小比較 @param {*} valid_time 傳入的時間格式:指定為 "06/24/2021 15:47:01.490" @return {*} 返回 valid_time 的時間戳 @author: wanghao ''' def get_time_stamp(valid_time): dd = datetime.datetime.strptime(valid_time,'%m/%d/%Y %H:%M:%S.%f') ts = int(time.mktime(dd.timetuple()) * 1000.0 + (dd.microsecond / 1000.0)) return ts if __name__ == '__main__': stamp1 = get_time_stamp("06/24/2021 15:47:01.490") stamp2 = get_time_stamp("06/24/2021 15:47:01.778") if (stamp1 - stamp2 <= 0): print('stamp1 is bigger') else: print('stamp2 is bigger')
如果傳進來的字符串是毫秒級的,但是需要的時間戳是秒級的,就轉換一下
def get_time_stamp(valid_time): dd = datetime.datetime.strptime(valid_time,'%m/%d/%Y %H:%M:%S.%f').strftime("%Y-%m-%d %H:%M:%S") ts = int(time.mktime(time.strptime(dd, '%Y-%m-%d %H:%M:%S'))) return ts if __name__ == '__main__': stamp1 = get_time_stamp("06/24/2021 15:47:01.490") stamp2 = get_time_stamp("06/24/2021 15:47:02.778") if (stamp1 - stamp2 <= 0): print('stamp2 is bigger') else: print('stamp1 is bigger')
總結:
兩個時間比較,就是把兩個時間的字符串轉換成int類型的時間戳進行比較。
