• 时间戳转为日期字串


    时间戳转为日期字串

    一、背景
    有时需要将时间戳:1565673941
    转为日期字串:2019-08-13 13:25:41。

    二、分析
    采用python,
    编写转换函数:time2date(1565673941)
    返回时间戳:2019-08-13 13:25:41。
    编写转换函数:time2date(1565673941.123456789)
    返回时间戳:2019-08-13 13:25:41.123。

    三、封装好的函数方法

    import time
    
    
    # 封装好的函数2.1:时间戳 转为 日期字符串。单位s,秒。
    def time2date(timeint=1565673941, format="%Y-%m-%d %H:%M:%S"):
        '''
        时间戳转为日期字串,单位s,秒
        :param timeint:时间戳
        :return:日期字串
        输出举例说明:
        (1565673941, "%Y-%m-%d %H:%M:%S")  输出  2019-08-13 13:25:41
        (1565673941, "%Y-%m-%d")  输出  2019-08-13
        (1565673941, "%Y%m%d")  输出  20190813
        '''
        local_time = time.localtime(timeint)
        data_head = time.strftime(format, local_time)
    
        return data_head
    
    
    def time2datems(timefloat, keep_small_num=3, date_format="%Y-%m-%d %H:%M:%S"):
        '''
        浮点时间戳转为日期字符串格式。
        :param timefloat: 时间戳,浮点型。
        :param keep_small_num:保留有效小数位数。即定义输出后面小数格式。
        :param date_format:定义输出前面主体日期格式。
        使用举例说明:
        (1565673941.123456789, 1, date_format="%Y-%m-%d %H:%M:%S")  输出:2019-08-13 13:25:41.1
        (1565673941.123456789, 3, date_format="%Y-%m-%d %H:%M:%S")  输出:2019-08-13 13:25:41.123
        (1565673941.123456789, 3, date_format="%Y%m%d %H:%M:%S")  输出:20190813  13:25:41.123
        :return:日期字符串,精确到毫秒,ms。
        '''
        # 获取前半截。日期和大时间
        local_time = time.localtime(timefloat)
        data_head = time.strftime(date_format, local_time)
    
        # 获取后半截。毫秒。保留有效数位后。
        ms_format = '{:.%sf}' % keep_small_num
        keep_small_float = ms_format.format(timefloat)
        keep_small_str = str(keep_small_float).split(".")
        ms_str = str(keep_small_str[1])
    
        # 拼接前后部分。
        dt_ms = "%s.%s" % (data_head, ms_str)
    
        return dt_ms
    
    
    if __name__ == '__main__':
        timeint1 = 1565673941
        format1 = "%Y-%m-%d %H:%M:%S"
        d1 = time2date(timeint1, format1)
        print(d1)
    
        timeint2 = 1565673941
        format2 = "%Y%m%d"
        d2 = time2date(timeint2, format2)
        print(d2)
    
        timefloat3 = 1565673941.123456789
        d3 = time2datems(timefloat3, 2)
        print(d3)
    
        timefloat4 = 1565673941.123456789
        format4 = "%Y%m%d  %H:%M:%S"
        d4 = time2datems(timefloat4, 3, format4)
        print(d4)
    

      

    延伸:

    UTC时间、ISO格式

    1、UTC时间是英国时间。非UTC(英国)时间,如:UTC+8(北京)时间。

    2、ISO格式是时间的字符串表示形式

    (1)用字母T分割日期和时间。如20180703T224426Z或2018-07-03T22:44:26Z 。

    (2)用字母Z表示是UTC(英国)时间。但是不加Z的不一定是什么时间了。

    参考:

    https://www.cnblogs.com/doit8791/p/10398997.html

    https://www.cnblogs.com/AcAc-t/p/datetime_utc_iso.html

  • 相关阅读:
    JDK5.0新特性系列10.监控与管理虚拟机
    JDK5.0新特性系列7.使用ProcessBuilder执行本地命令
    JDK5.0新特性系列4.静态导入
    JDK5.0新特性系列8.泛型编程
    JDK5.0新特性系列11.2线程 任务执行架构
    JDK5.0新特性系列6.格式化输出
    Request的编码问题,客户端为繁体系统时为乱码解决了。
    智能手机之新手篇[转]
    一篇颇有感触的文章
    修复Oracle9i中DBA的密码
  • 原文地址:https://www.cnblogs.com/andy9468/p/12627597.html
Copyright © 2020-2023  润新知