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


    绪论

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    二、将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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

  • 相关阅读:
    智能创新,竞技未来!1024 程序员节大赛火热进行中
    感恩节,感谢2022的转变,有在好好生活!
    go语言零碎笔记
    Metabase学习教程:仪表盘-1
    C++中的各种“虚“-- 虚函数、纯虚函数、虚继承、虚基类、虚析构、纯虚析构、抽象类讲解
    企业数字化转型建设过程中需要哪些能力?
    当Java遇上泛型:类型安全的魔法之旅
    rv1126-rv1109-环境搭建-全部编译的方法
    【千万别上当】揭秘又一个割韭菜的项目:明星网红直播切片项目
    内置对象和方法、前端基础之BOM和DOM
  • 原文地址:https://blog.csdn.net/weixin_42782150/article/details/125275519