【发布时间】:2021-03-16 19:25:34
【问题描述】:
我已经用不同的 Java 格式化程序尝试了各种不同的转换,但我仍然对看似简单的事情没有任何运气。
我有一个 UTC 日期/时间字符串。我正在尝试将其转换为另一个时区。有人能告诉我为什么以下不起作用吗?时区正在改变,但改变的方式并不正确。
更新:(虽然我似乎没有正确地将时区设置为 UTC,因为转换也不正确)。
String dateInput = "2021-02-16 20:57:43";
SimpleDateFormat mdyUtc = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
mdyUtc.setTimeZone(TimeZone.getTimeZone("UTC");
Date utcOutput = mdyUtc.parse(dateInput);
SimpleDateFormat mdyOffset = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
mdyOffset.setTimeZone(TimeZone.getTimeZone("GMT-10:00");
Date localOutput = mdyOffset.parse(dateInput);
System.out.print("UTC date = " + utcOutput);
System.out.print("Changed date = " + localOutput);
输出:
UTC 日期 = 2021 年 2 月 16 日星期二 15:57:43 EST
更改日期 = 2021 年 2 月 17 日星期三 01:57:43 EST
【问题讨论】:
-
你不是必须将输入时区设置为UTC,并使用本地时区格式化日期时间吗?
-
我试过了,但还是没有运气。我可以重做我的帖子以包含,我试图让它尽可能少。
-
我建议你不要使用
SimpleDateFormat、TimeZone和Date。这些类设计不良且过时,尤其是前者,尤其是出了名的麻烦。而是使用LocalDateTime、ZoneId, andZonedDateTime`,全部来自java.time, the modern Java date and time API。 -
对我来说,您的输出看起来确实正确。您期望得到哪个输出?
-
GMT-10:00 不是时区。例如,您想要太平洋/檀香山吗?始终以这种格式给出时区,即 region/city。
标签: java