首页 > 解决方案 > 特定格式的本地日期时间 yyyy-MM-dd-HH.mm.ss.SSSSSS

问题描述

我正在尝试以某种格式为我的 spring 数据 jpa 实体列获取 LocalDateTime。

我没有得到毫秒/微秒的最后 3 位数字。我不确定到底该怎么称呼它。

即使我格式化,最后 3 个 SSS 部分我总是得到 000

final String YYYY_MM_DD_HH_MM_SS_SSSSSS = "yyyy-MM-dd-HH.mm.ss.SSSSSS";
    ZonedDateTime zdtAtUtc = ZonedDateTime.now(ZoneId.of("UTC"));

    LocalDateTime ldt = zdtAtUtc.toLocalDateTime();
    DateTimeFormatter destFormatter = DateTimeFormatter.ofPattern(YYYY_MM_DD_HH_MM_SS_SSSSSS);

    System.out.println(zdtAtUtc);
    System.out.println(zdtAtUtc.format(destFormatter));
    System.out.println(ldt);

输出

2019-07-30T15:23:18.232Z[UTC]
2019-07-30-15.23.18.232000
2019-07-30T15:23:18.232

标签: java-8spring-data-jpalocaldatezoneddatetime

解决方案


这是 Java 8 中的时钟精度。

如果您要检查 now() 方法的代码,它会使用如下所示的瞬间: Instant now = clock.instant();

此刻在 Java 8 输出中: 2019-08-02T20:44:35.722Z

在以后的版本中: 2019-08-02T20:39:27.343408800Z

因此,如果您需要更高的精度,则需要切换到更新版本的 java。


推荐阅读