Java 7 DateFormat 将 UTC 日期解析为本地日期

Java 7 DateFormat to parse UTC date to Local Date

你能告诉我 JDK 7 日期格式应该是什么来解析日期 2019-06-18T19:04:30.515 UTC 并将其更改为本地日期时间吗?

在这里您可以找到关于这个主题的有趣文章:

https://en.wikipedia.org/wiki/Coordinated_Universal_Time

模式的解释可以在这里找到:

https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html#timezone

这让我建议 "yyyy-MM-dd'T'HH:mm:ss.SSS z" 作为模式。希望对你有帮助。

java.time

对于 Java 6 和 7,您可以使用 ThreeTen-Backport 项目将大部分现代 java.time 功能引入 Java 6 和 Java 7。这意味着您可以避免使用可怕的遗留 date-time 类,例如 SimpleDateFormat(由 DateTimeFormatter 代替)。

parse the date 2019-06-18T19:04:30.515 UTC

首先我们会处理您的输入字符串以完全符合 ISO 8601。我们将 SPACE 和“UTC”替换为 Z,发音为“Zulu”。

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

and change it to local date time?

要从 UTC 调整到另一个时区,请应用 ZoneId 以获得 ZonedDateTime

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

要生成表示 date-time 值的字符串,该值针对用户的人类语言和文化规范进行了本地化,请使用 DateTimeFormatter.ofLocalizedDateTime