Java SimpleDateFormat在时区之间进行转换

时间:2017-05-13 02:04:57

标签: java datetime

我无法将从MySQL服务器返回的时间戳转换为不同的时区。服务器的时区是UTC。

8:50 PM

输出始终为1:50 PM,我期待html, body { min-height: 100%; } body { background-image: url(http://myurl.com/myimage.jpg); background-repeat: no-repeat; background-position: 0 0; background-size: cover; } @media (min-width: 1120px), (min-height: 630px) { body { background-size: auto; } } (从我的Swift程序的等效过程返回的值。

1 个答案:

答案 0 :(得分:4)

您的解析格式字符串不完整,因此您不会尊重输入中的时区。

将格式字符串更改为"yyyy-MM-dd'T'HH:mm:ss.SSSX"

<强>更新

由于您的输入字符串是ISO 8601格式,您可以使用Instant(Java 8+)解析它,而无需提供输入格式。

假设您的默认Locale格式时间符合您的要求,您可以在不指定显式输出格式的情况下执行此操作。

// Prints "1:50 PM" (since my locale is "en_US")
System.out.println(Instant.parse("2017-05-06T20:50:59.000Z")
                          .atZone(ZoneId.of("America/Los_Angeles"))
                          .format(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)));