Java 如何使用ISO8601格式打印日期字符串?

Java 如何使用ISO8601格式打印日期字符串?,java,spring-boot,datetime,simpledateformat,java-11,Java,Spring Boot,Datetime,Simpledateformat,Java 11,请帮我打印以下格式的日期 示例:2020-08-05T16:17:10777 我尝试使用低于日期的转换器,但它没有提供我想要的输出 SimpleDateFormat sdf; sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); String text = sdf.format(requestTime); loggdata.append(REQUEST_TIME + requestDate); 我把

请帮我打印以下格式的日期 示例:
2020-08-05T16:17:10777
我尝试使用低于日期的转换器,但它没有提供我想要的输出

 SimpleDateFormat sdf;
 sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");

 String text = sdf.format(requestTime);
 loggdata.append(REQUEST_TIME + requestDate);
我把日期打印成“2020-08-20T06:26:09.003763Z”。日期为UTC时区,格式不同

我可以在stackoverflow中看到许多问题和答案。但在我的例子中,我需要的正是这种格式2020-08-05T16:17:10777见最后一部分“777”。
我还需要在本地时区显示时间

找到了同样的解决方案。我也使用了“LocalDateTime”

    LocalDateTime now = LocalDateTime.now();
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss,SSS");
    String dateInString= now.format(formatter);

它显示的日期如下:“2020-08-20T21:18:56321”

找到了同样的解决方案。我也使用了“LocalDateTime”

    LocalDateTime now = LocalDateTime.now();
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss,SSS");
    String dateInString= now.format(formatter);

它像这样显示日期“2020-08-20T21:18:56321”

您可以使用
LocalDateTime.parse(requestTime)
2020-08-05T16:17:10777如何生成此示例的最后一部分,我的意思是,777用逗号
替换
?更新的java时间类将是一个更好的选择,即使它需要更长的时间才能解决。您应该立即删除
SimpleDataFormat
,并开始使用
DateTimeFormatter
。您可以使用
LocalDateTime.parse(requestTime)
2020-08-05T16:17:10777如何生成此示例的最后一部分,我的意思是,777将
替换为逗号
?更新的java时间类将是一个更好的选择,即使它需要更长的时间才能解决。您应该立即删除
SimpleDataFormat
,并开始使用
DateTimeFormatter
。感谢您提供自己的答案。我很高兴切换到java.time,这是一种现代的java日期和时间API。两个建议:(1)使用
ZonedDateTime
而不是
LocalDateTime
。如果你打算把这个对象用于其他任何事情,它包含一个时区是好的,而且它永远不会有害。(2) 将显式时区传递给
now
方法。所以
ZoneDateTime now=ZoneDateTime.now(ZoneId.of(“亚洲/加尔各答”)。其余部分不变。如果需要JVM的时区,请传递
ZoneId.systemDefault()
。然后读者(和你自己)知道你已经有意识地选择使用默认时区。谢谢你提供了你自己的答案。我很高兴切换到java.time,这是一种现代的java日期和时间API。两个建议:(1)使用
ZonedDateTime
而不是
LocalDateTime
。如果你打算把这个对象用于其他任何事情,它包含一个时区是好的,而且它永远不会有害。(2) 将显式时区传递给
now
方法。所以
ZoneDateTime now=ZoneDateTime.now(ZoneId.of(“亚洲/加尔各答”)。其余部分不变。如果需要JVM的时区,请传递
ZoneId.systemDefault()
。然后读者(和你自己)知道你已经有意识地选择使用默认时区。