首页 > 解决方案 > Java 7 DateFormat 将 UTC 日期解析为本地日期

问题描述

您能否让我知道解析日期 2019-06-18T19:04:30.515 UTC 并将其更改为本地日期时间的 JDK 7 日期格式应该是什么?

标签: javajava-7simpledateformatdate-formatdate

解决方案


java.time

对于 Java 6 和 7,您可以使用ThreeTen-Backport项目将大多数现代java.time功能引入 Java 6 和 Java 7。这意味着您可以避免使用糟糕的遗留日期时间类,例如SimpleDateFormat(替换为DateTimeFormatter) .

解析日期 2019-06-18T19:04:30.515 UTC

首先,我们操作您的输入字符串以完全符合ISO 8601。我们将空格和“UTC”替换为Z,发音为“Zulu”。

String input = "2019-06-18T19:04:30.515 UTC".replace( " UTC" , "Z" ) ;
Instant instant = Instant.parse( input ) ;

并将其更改为本地日期时间?

要从 UTC 调整到另一个时区,请应用 aZoneId来获取ZonedDateTime.

ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;  // Or "Europe/Berlin" etc. 
ZonedDateTime zdt = instant.atZone( z ) ;

要生成一个字符串,表示为用户的人类语言和文化规范本地化的日期时间值,请使用DateTimeFormatter.ofLocalizedDateTime.


推荐阅读