• 周五. 8月 19th, 2022

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

python时间格式转换

admin

11月 28, 2021

今天写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类型的时间戳进行比较。

 

发表回复

您的电子邮箱地址不会被公开。