Java将日期时间从 "yyyy-MM-dd HH:mm:ss.SSSSSSS"转换为 "yyyy-MM-dd HH:mm:ss.S"或从 "yyyy-MM-dd HH:mm:ss.SSSSSSS"转换为 "yyyy-MM-dd HH:mm:ss.SSS"

标签 java java-11 java-time

Java 11

我想将“yyyy-MM-dd HH:mm:ss.SSSSSSS”中的日期转换为“yyyy-MM-dd HH:mm:ss.S”或“yyyy-MM-dd HH:mm” :ss.SSS"基于毫秒值。如果毫秒全为零,那么我只想要单个零,但如果它是非零值,那么我只想要省略尾随零的值。

示例:

  1. 输入:2021-03-10 16:37:02.4230000 => 期望输出:2021-03-10 16:37:02.423
  2. 输入:2021-03-10 16:39:51.0000000 => 所需输出:2021-03-10 16:39:51.0
  3. 输入:2021-04-22 23:03:52.0234000 => 所需输出:2021-04-22 23:03:52.0234

最佳答案

所以,我开始做一些类似的事情......

String text = "2021-03-10 16:37:02.4230000";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSS");

LocalDateTime ldt1 = LocalDateTime.parse("2021-03-10 16:37:02.4230000", formatter);
DateTimeFormatter shortFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S");
System.out.println(shortFormatter.format(ldt1));

LocalDateTime ldt2 = LocalDateTime.parse("2021-03-10 16:39:51.0000000", formatter);
System.out.println(shortFormatter.format(ldt2));

打印出...

2021-03-10 16:37:02.4
2021-03-10 16:39:51.0

嗯🤔,不完全是我们要找的。

我们很幸运,有 DateTimeFormatterBuilder类(class)。接下来,我尝试了类似...

DateTimeFormatter toFormatter = new DateTimeFormatterBuilder()
        .appendPattern("yyyy-MM-dd HH:mm:ss")
        .appendFraction(ChronoField.MILLI_OF_SECOND, 1, 9, true)
        .toFormatter();

System.out.println(toFormatter.format(ldt1));
System.out.println(toFormatter.format(ldt2));

打印出...

2021-03-10 16:37:02.423
2021-03-10 16:39:51.0

成功🎉

现在,请注意,我还没有真正使用过 DateTimeFormatterBuilder之前,所以可能有一些其他的,非常 super 酷的方法来达到相同或更好的结果,但是干草,这是一个很好的开始

关于Java将日期时间从 "yyyy-MM-dd HH:mm:ss.SSSSSSS"转换为 "yyyy-MM-dd HH:mm:ss.S"或从 "yyyy-MM-dd HH:mm:ss.SSSSSSS"转换为 "yyyy-MM-dd HH:mm:ss.SSS",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68171420/

相关文章:

java - 如何限制 TextField 使其只能包含一个 '.' 字符? JavaFX

java - 对于给定的日期,检测该月的第 n 个星期几,然后在接下来的 6 个月内用 Java 确定相同的日期

java - Java 8 日期时间 API (java.time) 和 Joda-Time 之间的差异

java - 非阻塞 Java 异步处理 - 如何限制内存使用?

java - java 11 HTTP 客户端上的 "java.io.IOException: Connection timed out"VS HttpTimeoutException

java - TZupdater 因 tzdata2016g 版本而失败

java - JProfiler - 未检测到不同用户运行的jvm

java - 尝试使用 cygwin 执行 jar,无法识别参数

java - 我可以使用java检测是否在另一个窗口中按下了按键

java - Hibernate 4 与 Java 11 兼容吗?