SimpleDateFormat - 带有 IST 时区的无法解析的日期异常。怎么了?

SimpleDateFormat - Unparsable Date exception with IST timezone. What's wrong?

我有带日期格式的字符串:

Oct 28, 2015, 05.15PM IST

所以我想使用 SimpleDateFormat 将它解析为 Date 对象:

String date = "Oct 28, 2015, 05.15PM IST";
SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy, hh.mmaa zzz", Locale.US);
Date myDate = format.parse(date);

但我遇到异常:

java.text.ParseException: Unparseable date: "Oct 28, 2015, 05.15PM IST" (at offset 22)

我做错了什么?

根据我对 SimpleDateFormat 的理解,在指定 AM/PM 组件时,您不需要使用两个 a 或三个 z。您正在尝试使用多个 AM/PM 说明符以及多个时区说明符来解析 "Oct 28, 2015, 05.15PM IST"。将格式对象更改为 SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy, hh.mma z", Locale.US);

问题是 SimpleDateFormat 无法将 "IST" 解析为时区,因为它不明确。

我根据 Adriaan Koster's answer解决了那个问题。 但实际上,只有在我从日期字符串中删除“IST”后,它才对我有用。 问题的完整解决方案如下所示:

String date = "Oct 28, 2015, 05.15PM IST";
date = date.substring(0, date.length()-4);

SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy, hh.mma", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));
Date myDate = format.parse(date);