You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Strftime格式问题:如何获取秒后完整9位数字的时间字符串?

如何用strftime生成包含9位纳秒的时间格式

标准的strftime没有直接输出9位纳秒的格式符,%f仅能获取6位微秒,要实现你需要的格式(如2022/12/05 00:00:04.530418100),需要结合对应语言/环境的工具,单独获取纳秒字段后拼接,或者使用支持纳秒的格式化替代方案,以下是常见场景的解决方法:

Python(3.9+)

Python的datetime对象提供了nanosecond属性直接获取9位纳秒值,你可以先用strftime格式化到秒级,再拼接纳秒部分:

from datetime import datetime

current_time = datetime.now()
# 先格式化日期、时间到秒,再拼接9位纳秒
formatted_time = current_time.strftime("%Y/%m/%d %H:%M:%S.") + f"{current_time.nanosecond:09d}"
print(formatted_time)

C语言

标准C的strftime不支持纳秒,需要通过clock_gettime获取包含纳秒的timespec结构体,再手动拼接:

#include <stdio.h>
#include <time.h>

int main() {
    struct timespec ts;
    clock_gettime(CLOCK_REALTIME, &ts);
    struct tm local_tm;
    localtime_r(&ts.tv_sec, &local_tm);

    char time_buffer[32];
    // 格式化到秒级
    strftime(time_buffer, sizeof(time_buffer), "%Y/%m/%d %H:%M:%S.", &local_tm);
    // 拼接9位纳秒(补零确保长度)
    printf("%s%09ld\n", time_buffer, ts.tv_nsec);
    return 0;
}

Java(8+)

Java的SimpleDateFormat不支持纳秒,改用DateTimeFormatter,通过SSSSSSSSS格式符直接输出9位纳秒:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class NanoTimeFormat {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSSSSSSSS");
        String formatted = LocalDateTime.now().format(formatter);
        System.out.println(formatted);
    }
}

核心思路:由于strftime的标准定义里没有纳秒格式,要么拆分步骤——用strftime处理秒及以上部分,再单独拼接纳秒;要么使用对应语言中原生支持纳秒格式化的工具类替代strftime。

内容的提问来源于stack exchange,提问作者ryan corner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:50:25