时间戳转为日期字串
一、背景
有时需要将时间戳: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的不一定是什么时间了。
参考: