|
发表于 2021-11-11 00:37:45
|
显示全部楼层
本楼为最佳答案
本帖最后由 hrpzcf 于 2021-11-11 08:48 编辑
我知道你意思了,你认为getmtime返回的10位时间戳加6位小数只支持精确到秒,其实不是的,精确到秒只需前10位整数,后6位小数记录到微秒级。
python内置模块时间格式化也不用13位整数的时间戳,而是用10位整数加6为小数的时间戳,如果你要把通用的毫秒级时间戳给别人,直接把获得的时间戳乘1000保留整数就可以了。
- # coding: utf-8
- import os
- import time
- import datetime
- st = os.path.getmtime(__file__) # 获取文件时间戳
- # 精确到秒时,只要前10位整数,后6位小数无关紧要
- print(time.strftime("%H-%M-%S", time.localtime(st))) # 10位整数加6位小数
- print(time.strftime("%H-%M-%S", time.localtime(int(st)))) # 10位整数,秒数跟上面没区别
- # time 不支持毫秒级格式化符,所以用 datetime
- # 后 6 位小数支持精确到微秒级,值查到 %f 微秒格式化符,没查到毫秒符
- # 所以格式化出的时间倒数 3 位时间不取就是毫秒了
- dt = datetime.datetime.fromtimestamp(st)
- t1 = datetime.datetime.strftime(dt, "%H-%M-%S-%f")[:-3] # 毫秒
- t2 = datetime.datetime.strftime(dt, "%H-%M-%S-%f") # 微秒
- print(t1, "\n", t2, sep="")
复制代码 |
|