【问题标题】:Print ZonedDateTime exactly as it is parsed完全按照解析的方式打印 ZonedDateTime
【发布时间】:2018-07-19 07:04:28
【问题描述】:

我有一个格式为的日期字符串:

String date = 2014-05-05T05:05:00.000 ZonedDateTime zoneDateTime = LocalDateTime.parse(date).atZone(ZoneId.of("UTC");

以上打印:

2014-05-05T05:05Z[UTC]

有什么方法可以打印成下面的格式吗?

2014-05-05T05:05:00.000Z

在 joda 时间,我可以轻松做到这一点:

DateTime datetime= org.joda.time.LocalDateTime.parse(date).toDateTime(UTC)

【问题讨论】:

标签: java-8 zoneddatetime


【解决方案1】:

有什么方法可以打印成下面的格式吗?

字符串日期 = 2014-05-05T05:05:00.000

您可以使用java.time.format.DateTimeFormatter.ofPattern()

        String date = "2014-05-05T05:05:00.000";
        ZonedDateTime zoneDateTime = LocalDateTime.parse(date).atZone(ZoneId.of("UTC"));
        System.out.println(zoneDateTime);
        System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX").format(zoneDateTime));

参考:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

【讨论】:

  • 谢谢,有什么办法可以得到这个打印的 s ZonedDateTime。这实际上是一个字符串
  • 我已经试过了,当我得到:java.time.format.DateTimeParseException: Text '2014-05-05T05:05:00.000' could not be parsed at index 23, when I remove the X 来自它可以工作的格式化程序,但结果是:2014-05-05T05:05Z[UTC]
  • @parameswar 问题中的代码无法导致您在评论中出现错误。答案中的 DateTimeFormatter 用于格式化 ZonedDateTime。 解析 ZonedDateTime 时会发生此错误。所以,请正确阅读答案。
  • 我的意思是,DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX").format(zoneDateTime) 是一个字符串,格式正确,但我需要它的类型为 ZonedDateTime
  • 我认为你在这里提出了错误的问题。阅读文档javabrahman.com/java-8/… 并了解 ZonedDateTime 的用法。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-07
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
相关资源
最近更新 更多