【问题标题】:How to format ZoneDateTime in Java 8?如何在 Java 8 中格式化 ZoneDdateTime?
【发布时间】:2020-11-27 14:11:49
【问题描述】:

我想以某种格式格式化当前日期。

格式:20200807|12:44:55.000

但使用以下代码只能打印到几秒钟。我想打印到毫秒。

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss");
String formattedString1 = ZonedDateTime.now().format(formatter1);
System.out.println(formattedString1);

【问题讨论】:

  • 你应该告诉模式也考虑毫秒......你到底需要什么?毫秒数还是秒数?
  • 你的尝试在哪里?您的模式显然不包括毫秒。你为什么不尝试这样做呢?
  • @f1sh 我很确定 OP 认为这段代码可以被认为是一种尝试,而知道 java.time 的编码人员则不能。很难判断问题是否包含实际尝试......
  • @deHaar 恕我直言,对于 OP 来说,很明显需要扩展该模式,因为这就是 sn-p 的全部内容。但是,OP 没有阅读模式的文档并弄清楚它,而是发布了这个问题。这就是为什么我不认为这是一次尝试。反对票的数量也说明了同样的事情。
  • @f1sh 是的,我终于同意了……也许我在这里太宽容了。

标签: java date java-8 timestamp format


【解决方案1】:

您基本上可以扩展您正在使用的模式String,它目前(并且显然)仅将时间单位格式化为秒(HH:mm:ss ⇒ 小时、分钟和秒)。

将其设为"yyyyMMdd|HH:mm:ss.SSS" 以获得秒的分数,

public static void main(String[] args) {
    DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss.SSS");
    String formattedString1 = ZonedDateTime.now().format(formatter1);
    System.out.println(formattedString1);
}

这将输出String,其格式如下:

20200807|10:57:17.547

如果您需要一天中的毫秒数(无论如何),您可以使用单个 A 而不是这三个 S

查看JavaDocs of java.time.DateTimeFormatter 以了解模式字母及其含义。

这里有一小段摘录:

   ...
   H       hour-of-day (0-23)          number            0
   m       minute-of-hour              number            30
   s       second-of-minute            number            55
   S       fraction-of-second          fraction          978
   A       milli-of-day                number            1234
   n       nano-of-second              number            987654321
   N       nano-of-day                 number            1234000000
   ...

【讨论】:

    【解决方案2】:

    更改模式以包含毫秒。

    DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss.SSS");
    String formattedString1 = ZonedDateTime.now().format(formatter1);
    System.out.println(formattedString1);
    

    【讨论】:

      【解决方案3】:

      在您的代码中,您没有考虑以毫秒为单位的模式。所以你需要更新你的模式如下:

      DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyyMMdd|HH:mm:ss.SSS");
      

      更多详情可以参考JavaDoc

      【讨论】:

        猜你喜欢
        • 2020-09-20
        • 1970-01-01
        • 2015-11-25
        • 1970-01-01
        • 2017-10-20
        • 2018-01-22
        • 2017-07-14
        • 2020-05-30
        • 1970-01-01
        相关资源
        最近更新 更多