【问题标题】:date formatting from response响应的日期格式
【发布时间】:2014-04-10 10:03:09
【问题描述】:

调用OData service 并获取date 列的ATOM XML 响应给了我日期值

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

实现相同的任何功能。任何解决方法。请帮忙。

【问题讨论】:

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


    【解决方案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"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多