SimpleDataFormat未解析ist日期

ki1q1bka  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(382)

我试图解析这个日期:周一,2021年7月5日23:19:58

String date = "Mon, 05 Jul 2021 23:19:58 IST";
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.getDefault());
dateFormat.parse(date);

但我得到了一个错误: java.text.ParseException: Unparseable date: "Mon, 05 Jul 2021 23:19:58 IST" 当我从格式中省略小写的z时,我没有得到异常,但是日期不在正确的时区。我试着做了以下几点:

dateFormat.setTimeZone(TimeZone.getTimeZone("IST"));

但日期仍然显示在未来,这是不正确的。如何正确解析此日期?非常感谢。

dtcbnfnu

dtcbnfnu1#

不要使用日期或simpledatetime。使用java.time包中的类。

String date = "Mon, 05 Jul 2021 23:19:58 IST";

DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(
        "EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
ZonedDateTime zdt = ZonedDateTime.parse(date,dateFormat);
System.out.println(zdt.format(dateFormat));

印刷品

Mon, 05 Jul 2021 23:19:58 GMT

编辑
在阅读了 java.time 我找到的包裹 ZoneId.SHORT_IDS 包含 IST=Asia/Kolkata . 因此,如果一个人做了以下事情:

ZonedDateTime zdt = ZonedDateTime.parse(date,dateFormat)
              .withZoneSameLocal(ZoneId.of("Asia/Kolkata"));
System.out.println(zdt.format(dateFormat));

它打印

Mon, 05 Jul 2021 23:19:58 IST

相关问题