java - 如何在 java 中解析具有两个或三个毫秒数字的日期时间?

标签 java datetime-format java-time datetime-parsing dateformatter

这是我将 String 解析为 LocalDateTime 的方法。

    public static String formatDate(final String date) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS");
        LocalDateTime formatDateTime = LocalDateTime.parse(date, formatter);
        return formatDateTime.atZone(ZoneId.of("UTC")).toOffsetDateTime().toString();
    }

但这只适用于输入字符串,例如 2017-11-21 18:11:14.05 但对于 2017-11-21 18:11:14.057 失败 与 DateTimeParseException

如何定义适用于 .SS.SSS 的格式化程序?

最佳答案

您需要构建具有指定分数的格式化程序

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
  .appendPattern("yyyy-MM-dd HH:mm:ss")
  .appendFraction(ChronoField.MILLI_OF_SECOND, 2, 3, true) // min 2 max 3
  .toFormatter();

LocalDateTime formatDateTime = LocalDateTime.parse(date, formatter);

关于java - 如何在 java 中解析具有两个或三个毫秒数字的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48291776/

相关文章:

java - 与等效的 Calendar 代码相比,生成的 java.time 代码是否具有更多代码语句

java - Android下HttpURLConnection的默认超时时间是多少?

java - 我怎样才能在java中获得这个日期时间格式

Java GUI 图像大小

apache-spark - 将具有 UTC 偏移量的字符串转换为 Spark 时间戳

python - 我正在尝试将时间列转换为日期时间,但该列看起来像这样 '2020-01-07T22:24:20.000Z'

java - 无法从 HH :mm:ss. SSS'Z' 转换为 HH:MM 格式 Java

java - 使用新的 dateTime API 获取持续时间

java - Spring boot 能够接受 Enum 作为请求参数

java - Aerospike 插入 1000 万个键值所需的时间太长