小编典典

响应中的日期格式

java

调用a 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格式,如上所示。

任何功能都可以实现相同。任何工作。请帮忙。


阅读 243

收藏
2020-11-30

共1个答案

小编典典

下列:

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"));
2020-11-30