Python时间戳和日期格式之间的相互转化

Python时间戳和日期格式之间的相互转化

  • 绪论
  • 一、获取当前日期,转为10位或13位时间戳
  • 二、将10位或13位时间戳转为日期格式(年-月-日 时-分-秒)
  • 绪论

    java默认精度是毫秒级别的,生成的时间戳是13位,而python默认是10位的,精度是秒。那么python是如何生成13位时间戳,以及时间戳如何转换为日期(年-月-日 时-分-秒)

  • 13位是毫秒时间戳(难点: 输入毫秒级的时间,转出正常格式的时间)
  • 10位是秒时间戳。
  • Python实现【时间戳】与【日期格式】之间相互转化的应用函数汇总表:

    Python函数 功能 示例
    time.time() 获取当前时间 1655179674.911647
    int(time.time()) 获取精确到秒时间戳,10位 1655179674
    int(round(time.time() * 1000)) 获取精确毫秒时间戳,13位 1655179674912
    time.localtime(k1) 将10位时间戳k1转为日期格式 time.struct_time(tm_year=2022, tm_mon=6, tm_mday=11, tm_hour=18, tm_min=19, tm_sec=48, tm_wday=5, tm_yday=162, tm_isdst=0)
    time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime(k1)) 将10位时间戳k1转为【年-月-日 时-分-秒】日期格式 2019-09-02 16:19:35
    time.localtime(k1/1000) 将13位时间戳k1转为日期格式 time.struct_time(tm_year=2022, tm_mon=6, tm_mday=11, tm_hour=18, tm_min=19, tm_sec=48, tm_wday=5, tm_yday=162, tm_isdst=0)
    time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime(k1/1000)) 将13位时间戳k1转为【年-月-日 时-分-秒】日期格式 2019-09-02 16:19:35

    一、获取当前日期,转为10位或13位时间戳

  • 自定义函数1 get_second():python获取精确到秒时间戳,10位
  • 自定义函数2 get_millisecond():python获取精确毫秒时间戳,13位
  • 自定义函数3 get_delta(t1,t2):两个时间戳相减,返回秒数
  • # -*- coding:utf-8 -*-
    
    import time
    
    # 获取当前日期,转为10位时间戳格式
    def get_second():
        """
        :return: 获取精确到秒时间戳,10位
        """
        return int(time.time())
    
    # 获取当前日期,转为13位时间戳格式
    def get_millisecond():
        """
        :return: 获取精确毫秒时间戳,13位
        """
        millis = int(round(time.time() * 1000))
        return millis
    
    # 两个13位的时间戳相减,返回秒数
    def get_delta(t1,t2):
        """
        :param t1: 13位时间戳
        :param t2: 13位时间戳
        :return: 两个时间戳相减,返回秒数
        """
        res=int((t2 - t1)/1000)
        return res
    
    if __name__ == "__main__":
        print(get_second())  # 获取当前时间,并转为10位时间戳格式
        >>>
        1655179674
        print(time.time())   # 直接打印全量精度的时间戳
        >>>
        1655179674.911647
        time1=get_millisecond()
        print(time1)    # 获取当前时间,并转为13位时间戳格式
        >>>
        1655179674912
        # 两个13位时间戳作差运算
        k1=1567412375458
        k2=1567412395853
    
        now = int(round(time.time() * 1000))
        print(now)
        >>>
        1655179674913
        t1 = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(k1/1000))
        t2=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(k2/1000))
        print(t1)
        >>>
        2019-09-02 16:19:35
        print(t2)
        >>>
        2019-09-02 16:19:55
        print(get_delta(k1,k2))
        >>>
        20
    

    二、将10位或13位时间戳转为日期格式(年-月-日 时-分-秒)

    函数4 millisecond_to_time(millis):13位时间戳转换为日期格式字符串

    import time
    
    # 输入毫秒级的时间,转出正常格式的时间
    def timeStamp(timeNum):
        timeStamp = float(timeNum/1000)
        timeArray = time.localtime(timeStamp)
        otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
        print(otherStyleTime)
    
    time_st = 1654942788469  # 随机指定时间戳
    timeStamp(time_st)  # 调用函数
    >>>
    2022-06-11 18:19:48
    

    参考链接:【1】在线时间转换工具:https://tool.lu/timestamp

    来源:Yale曼陀罗

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python时间戳和日期格式之间的相互转化

    发表评论