有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

具有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)

我做错了什么


共 (2) 个答案

  1. # 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. # 2 楼答案

    问题是SimpleDataFormat无法将“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);