如何解析包含Locale的日期字符串

时间:2012-03-30 15:01:16

标签: java parsing timezone jodatime

我有一个日期字符串“Sat Jan 28 00:00:00 IST 2012”,我正在尝试使用Joda的DateTimeFormatter解析它。我有以下代码,不知道在哪里,它出错了。

DateTimeFormatter dateFmt = DateTimeFormat
            .forPattern("EEE MMM dd HH:mm:SS ZZZ yyyy");
DateTime dateTime = dateFmt.parseDateTime(dateString);
  

异常:java.lang.IllegalArgumentException:格式无效:“2012年1月28日00:00:00 IST 2012”在“IST 2012”格式错误。请帮我解决这个问题。谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

API无法识别

IST时区,它只能识别getAvailableIds()

中的一个时区

答案 1 :(得分:1)

使用zzz(小写),而不是ZZZ(大写)。来自the API docs

 z   time zone              text      Pacific Standard Time; PST
 Z   time zone offset/id    zone      -0800; -08:00; America/Los_Angeles

答案 2 :(得分:0)

我不知道为什么,但如果我使用SimpleDateFormat代替DateTimeFormatter,它就可以了。

CODE:

public static void main(String[] args) throws ParseException {
        String FORMAT = "EEE MMM dd HH:mm:SS zzz yyyy";
        String dateString = "Sat Jan 28 00:00:00 IST 2012";
        SimpleDateFormat dateFormat = new SimpleDateFormat(FORMAT);
        Date date = dateFormat.parse(dateString);
        System.out.println(new DateTime(date));
        DateTimeFormatter dateFmt = DateTimeFormat.forPattern(FORMAT);
//      System.out.println(dateFmt.parseLocalDateTime(dateString));
//      System.out.println(dateFmt.parseDateTime(dateString));
        System.out.println(dateFmt.parseLocalTime(dateString));
    }