【发布时间】:2021-09-05 23:27:19
【问题描述】:
我的计算机时区是 IST,我正在执行以下代码
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
SimpleDateFormat format1 = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");
long millisFromDate = format1.parse("Tue, 22 Jun 2021 15:40:52 IST").getTime();
System.out.println(millisFromDate);
上面的 sn-p 打印 1624369252000。
现在当我转换 1624369252000 UTC 时间和日期:2021 年 6 月 22 日星期二 13:40:52 https://currentmillis.com/
我认为我做错了什么。有人可以帮忙吗?
UTC 时间应该是 10:10:52?
【问题讨论】:
-
你是对的,它是错的。以色列标准时间 (IST) 的偏移量为 +02:00,与您观察到的结果一致;但以色列使用夏令时/夏令时,6 月 22 日是以色列夏令时或 IDT,偏移量为 +03:00。 IST 您可能还打算使用爱尔兰夏令时或其他方式。
-
我建议您不要使用
SimpleDateFormat、TimeZone和Date。这些类设计不佳且早已过时,尤其是第一个类是出了名的麻烦。而是使用ZoneId、ZonedDateTime和DateTimeFormatter,均来自java.time, the modern Java date and time API。