致电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格式,如上所示。
任何实现相同的功能。任何workaroud。请帮忙。
答案 0 :(得分:2)
以下内容:
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"));