如何修改Python strftime代码实现秒后10位纳秒级时间输出
解决方案
首先明确两个关键点:
- Python 标准库
datetime.strftime内置的%f占位符仅支持输出6位微秒级小数秒,无法直接生成10位长度的纳秒级小数秒,需要手动拼接对应部分。 - 你给出的目标格式用两位数字表示月份,不需要原代码里
%b对应的月份缩写,同时要去掉原格式中包裹时间的括号。
直接替换原有代码为以下内容即可满足要求(适用于Python 3.7及以上版本,也是目前绝大多数生产环境的通用版本):
from datetime import datetime now = datetime.now() return f"{now.strftime('%d-%m-%Y %H:%M:%S')}.{now.nanosecond:0<010d}"
代码逻辑说明
%d-%m-%Y %H:%M:%S对应输出目标格式的基础时间部分,例如14-07-2002 10:40:20,其中%m是两位数字月份的占位符。now.nanosecond会获取当前时间在当前秒内的纳秒计数值,取值范围为0到999999999。:0<010d是格式化规则:将纳秒值转为字符串后固定占10位长度,不足10位时在右侧补0,刚好满足小数点后保留10位数字的要求。
如果你使用的Python版本低于3.7(无
nanosecond属性),可以用以下兼容版本实现:import time from datetime import datetime total_ns = time.time_ns() sec_part = total_ns // 10**9 # 计算秒后10位小数部分 decimal_part = (total_ns % 10**9) * 10 return f"{datetime.fromtimestamp(sec_part).strftime('%d-%m-%Y %H:%M:%S')}.{decimal_part:010d}"
内容的提问来源于stack exchange,提问作者Amrmsmb
相关产品推荐
相关产品推荐

