2012-03-30 118 views
0

我有一個日期字符串「星期六1月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異常:無效的格式爲: 「週六1月28日00:00:00 IST 2012」 在 「2012 IST」 格式不正確。請幫我解決這個問題。謝謝你的幫助。

回答

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)); 
    } 
2

IST不被認可的API時區,它只能識別所在時區的一個從getAvailableIds()

+0

如果你的意思是當時的印度標準時間可能會調用'公共靜態的String [] getAvailableIDs(INT rawOffset)'和'5.5',看看它返回,應該有像' Kolkatta /印度'不確定,看看它 – 2012-03-30 15:14:20

+0

嘿,IST在那裏,我只是試圖打印所有這些。 (字符串字符串:TimeZone.getAvailableIDs()){ \t \t \t System.out.println(string); \t \t}' – Ahamed 2012-03-30 15:17:29

+0

然後只是將'ZZZ'替換爲'zzz',就像Matt建議的那樣 – 2012-03-30 15:18:03

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