以下:
public static void main(String[] args) {
String fromDate = "Thu Aug 02 2012 02:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)";
String fromDateConverted = fromDate.replaceAll("\\+(..)(..)", "+$1:$2");
System.out.println("ORG: " + fromDate);
System.out.println("CNV: " + fromDateConverted);
SimpleDateFormat parseFormat = new SimpleDateFormat("EE MMM dd yyyy HH:mm:ss zzzz", Locale.ENGLISH);
Date theDate = parseFormat.parse(fromDateConverted);
// OData Edm.DateTime:
// yyyy 「-」 mm 「-」 dd 「T」 hh 「:」 mm [":" ss["." fffffff]]
SimpleDateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.0000000");
System.out.println("EDM: " + outFormat.format(theDate));
}
打印出:
ORG: Thu Aug 02 2012 02:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)
CNV: Thu Aug 02 2012 02:00:00 GMT+02:00 (Mitteleuropäische Sommerzeit)
EDM: 2012-08-02T03:00:00.0000000
注意的時區轉換。 Java SimpleDateFormat
需要偏移量中的冒號。
說到時區,我不知道OData Atom XML是否指定了某個時區。 Edm.DataTime沒有這樣的功能。
編輯:如果你想輸出轉換到一個特定的時間段(我的默認TZ是GMT + 1,所以它打印03:00爲輸入02:00 GMT + 2),可以設置時區爲outFormat,例如:
outFormat.setTimeZone(TimeZone.getTimeZone("PST"));