响应的日期格式

调用OData service并获取date列的ATOM XML响应date得到日期值

2012-08-02T00:00:00.0000000

但。 目前我有一个日期值,如"Thu Aug 02 2012 02:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)" 。 我想将此值转换为Edm.DateTIme格式,如上所示。

任何function都能达到同样的效果。 任何workaroud。 请帮忙。

下列:

 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没有这样的function。

编辑 :如果要将输出转换为特定时区(我的默认TZ为GMT + 1,因此输入02:00 GMT + 2输入),您可以设置outFormat的时区,例如:

 outFormat.setTimeZone(TimeZone.getTimeZone("PST"));