时间戳转为日期字串

时间戳转为日期字串

一、背景
有时需要将时间戳: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

原文地址:https://www.cnblogs.com/andy9468/p/12627597.html