把list里面的时间戳转化为字符串

        对时间数据进行保存或者运算时,通常可以用时间戳来处理,用时间戳表示的时间来进行加、减、乘、除、积分、微分运算和比较大小都很方便。但是在画图设置标签(time labels),或者输出时间数据时,需要把时间戳转化为字符串,以方便人类阅读。有些时候,还需要把时间字符串的精度保留到ms精度,类似于11点25分34.88秒,但是time.localtime产生时间字符串似乎没有毫秒ms。为了解决这个问题,先后编写了四个版本的函数来把list里面的时间戳转化为字符串,感觉第四版最好用。


函数测试结果如下:

time2str1st结果:
2021-08-28 08:38:31
2021-10-04 15:42:14
time2str2nd结果  不能输出ms: ['2021-08-28 08:38:31', '2021-10-04 15:42:14']
time2str3rd结果: ['2021-08-28 08:38:310.33299', '2021-10-04 15:42:140.09999']
time2str4th结果: ['2021-08-28 08:38:31.333000', '2021-10-04 15:42:14.100000']


代码如下


##功能:把时间戳转化为时间'%Y-%m-%d %H:%M:%S.%f'

##第一版 :输入字符串时间 2021年9月1日 ###########################
def time2str1st(obsTimeStamp,timeFormat='%Y-%m-%d %H:%M:%S'): ## 时间戳转化为可读型时间
    import time
    obsTimeStruct = time.localtime(obsTimeStamp)    ## 结构型时间 
    obsDate = time.strftime(timeFormat, obsTimeStruct)   ## 可读型时间
    return(obsDate)
################################################################


##第二版:输入输出均为list 2021年10月26日  不可输出ms   ###########################
def time2str2nd(timeStampList,timeFormat='%Y-%m-%d %H:%M:%S'): ## 时间戳转化为可读型时间
    import time
    timeStrList = list()
    for timeStamp in timeStampList:
        timeStruct = time.localtime(timeStamp)    ## 结构型时间  
        timeStr = time.strftime(timeFormat,timeStruct)   ## 可读型时间
        timeStrList.append(timeStr)
    return(timeStrList)
################################################################
##不可输出ms 的原因在于time.struct_time中没有ms 的字段
##time.struct_time(tm_year=2021, tm_mon=10, tm_mday=2, tm_hour=23, tm_min=39, tm_sec=48, tm_wday=5, tm_yday=275, tm_isdst=0)

##第三版:输入输出均为list 2021年10月26日  可输出ms  但是丑###########################
def time2str3rd(timeStampList,timeFormat='%Y-%m-%d %H:%M:%S'): ## 时间戳转化为可读型时间
    import time
    if '.%f' in timeFormat:
        miliSecFlag = 1
        timeFormat = timeFormat[0:len(timeFormat)-3]
    else:
        miliSecFlag = 0
    timeStrList = list()
    for timeStamp in timeStampList:
        miliSec = timeStamp-int(timeStamp)
        miliSec = int(miliSec*100000)/100000
        miliSec = str(miliSec)
        timeStruct = time.localtime(timeStamp)    ## 结构型时间 
        timeStr = time.strftime(timeFormat,timeStruct)   ## 可读型时间
        if miliSecFlag==1:
            timeStr = timeStr+miliSec
        timeStrList.append(timeStr)
    return(timeStrList)
################################################################

###第四版: 输入输出均为list 2021年11月16日 可输出ms ###########################
def time2str4th(timeStampList,timeFormat='%Y-%m-%d %H:%M:%S'): ## 时间戳转化为可读型时间
    import datetime
    timeStrList = list()
    for timeStamp in timeStampList:
        d = datetime.datetime.fromtimestamp(timeStamp)        # datetime类型 精确到毫秒
        timeStr = d.strftime(timeFormat) #字符串时间
        timeStrList.append(timeStr)
    return(timeStrList)
################################################################

timeStampList = [1630111111.333,1633333334.1]##list中的时间
print('time2str1st结果:')
for timeStamp in timeStampList:
    print(time2str1st(timeStamp,'%Y-%m-%d %H:%M:%S'))
print('time2str2nd结果  不能输出ms:',time2str2nd(timeStampList,'%Y-%m-%d %H:%M:%S'))
print('time2str3rd结果:',time2str3rd(timeStampList,'%Y-%m-%d %H:%M:%S.%f'))
print('time2str4th结果:',time2str4th(timeStampList,'%Y-%m-%d %H:%M:%S.%f'))




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值