调用a OData service并获取列的ATOM XML响应date将日期值设置为
OData service
ATOM XML
date
<d:BUSINESS_DATE m:type="Edm.DateTime">2012-08-02T00:00:00.0000000</d:BUSINESS_DATE>
但。目前,我有一个类似的日期值"Thu Aug 02 2012 02:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)"。我想将此值转换为Edm.DateTIme格式,如上所示。
"Thu Aug 02 2012 02:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)"
任何功能都可以实现相同。任何工作。请帮忙。
下列:
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希望在偏移量中使用冒号。
SimpleDateFormat
说到时区,我不知道OData Atom XML是否在某处指定了时区。Edm.DataTime没有此类功能。
编辑 :如果要将输出转换为特定的时区(我的默认TZ为GMT + 1,因此输入02:00 GMT + 2的输出为03:00),则可以设置outFormat的时区,例如:
outFormat.setTimeZone(TimeZone.getTimeZone("PST"));