响应中的日期格式

时间:2014-03-07 10:03:44

标签: javascript java datetime type-conversion atom-feed

致电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。请帮忙。

1 个答案:

答案 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"));