具有IST时区的java SimpleDataFormat不可解析日期异常。发生了什么?
我有一个带日期的字符串,格式如下:
Oct 28, 2015, 05.15PM IST
因此,我想使用SimpleDataFormat将其解析为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)
我做错了什么
# 1 楼答案
根据我对
SimpleDateFormat
的理解,在指定AM/PM组件时,您不需要使用两个a或三个z。您正试图用多个AM/PM说明符以及多个时区说明符解析“2015年10月28日,05.15PM IST”。将format对象更改为SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy, hh.mma z", Locale.US);
# 2 楼答案
问题是SimpleDataFormat无法将“IST”解析为时区,因为它不明确
我根据 Adriaan Koster's answer解决了那个问题。 但实际上,只有在我从约会串中删掉“IST”之后,它才对我有效。 因此,问题的完整解决方案如下所示: