下列:
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,因此输入02:00 GMT +
2的输出为03:00),则可以设置outFormat的时区,例如:
outFormat.setTimeZone(TimeZone.getTimeZone("PST"));


