【问题标题】:Java 8 LocalDateTime - How to keep .000 milliseconds in String conversionJava 8 LocalDateTime - 如何在字符串转换中保持 0.000 毫秒
【发布时间】:2017-12-31 15:59:53
【问题描述】:

我有一个通过String 收到的时间戳,格式如下:

2016-10-17T12:42:04.000

我将通过以下行将其转换为 LocalDateTime 以添加一些天数(然后返回 String):

String _120daysLater = LocalDateTime.parse("2016-10-17T12:42:04.000",
    DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS")).minusDays(120).toString());

但是,我注意到它返回的响应减少了 .000 毫秒。

我不确定确保保留确切模式的最简洁方法。现在我只是添加一个毫秒,并且可能有一种方法可以将旧的 SimpleDateFormat 合并到其中,但我希望有更好的方法。

【问题讨论】:

  • 只需使用相同的 DateTimeFormatter 来格式化您的 LocalDateTime,而不是调用 toString()。

标签: java datetime format datetime-format java-time


【解决方案1】:

LocalDateTime::toString 如果为零则省略部分:

所使用的格式将是最短的输出时间的完整值,其中省略的部分被暗示为零。

使用LocalDateTime::format 而不是依赖toString()

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
LocalDateTime _120daysLater = LocalDateTime.parse("2016-10-17T12:42:04.000", formatter).minusDays(120);

// This just uses default formatting logic in toString. Don't rely on it if you want a specific format.
System.out.println(_120daysLater.toString());

// Use a format to use an explicitly defined output format
System.out.println(_120daysLater.format(formatter));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2013-03-02
    • 2014-07-19
    • 2012-09-12
    • 2021-08-31
    • 2021-09-24
    • 2021-08-19
    相关资源
    最近更新 更多