【问题标题】:How to generate XMLGregorianCalendar time as UTC如何将 XMLGregorianCalendar 时间生成为 UTC
【发布时间】:2018-01-11 16:17:19
【问题描述】:

我想创建一个具有以下特征的XMLGregorianCalendar:

  • 仅时间
  • UTC 时区(末尾附加“Z”)

所以我希望日期打印为:18:00:00Z (XML Date)。

元素是一个 xsd:time,我希望时间在 XML 中像这样显示。

<time>18:00:00Z</time>

但我得到以下信息:21:00:00+0000。我在 -3 偏移,结果是我的偏移计算。

为什么我的代码有问题?

protected XMLGregorianCalendar timeUTC() throws Exception {
    Date date = new Date();
    DateFormat df = new SimpleDateFormat("HH:mm:ssZZ");
    df.setTimeZone(TimeZone.getTimeZone("UTC"));
    String dateS = df.format(date);
    return DatatypeFactory.newInstance().newXMLGregorianCalendar(dateS);
}

【问题讨论】:

    标签: java utc xmlgregoriancalendar


    【解决方案1】:

    要获得您提到的输出 (18:00:00Z),您必须将 XMLGregorianCalendar 的时区偏移设置为 0 (setTimezone(0)) 以使 Z 出现。您可以使用以下内容:

    protected XMLGregorianCalendar timeUTC() throws DatatypeConfigurationException {
    
            SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
            dateFormat.setTimeZone(TimeZone.getTimeZone(ZoneOffset.UTC));
    
            XMLGregorianCalendar xmlcal = DatatypeFactory.newInstance()
                .newXMLGregorianCalendar(
                    dateFormat.format(new Date()));
            xmlcal.setTimezone(0);
    
            return xmlcal;
        }
    

    如果您想要完整的 DateTime,那么:

    protected XMLGregorianCalendar timeUTC() throws DatatypeConfigurationException {
            return DatatypeFactory.newInstance()
                .newXMLGregorianCalendar(
                    (GregorianCalendar)GregorianCalendar.getInstance(TimeZone.getTimeZone(ZoneOffset.UTC)));
        }
    

    输出应该是这样的:2017-08-04T08:48:37.124Z

    【讨论】:

    • 我已经更新了我的问题,我需要在 XML 中将日期格式化为 &lt;time&gt;18:00:00Z&lt;/time&gt;。
    • 我已经更新了我的答案,请查看。它对我有用!
    • 有效!当我使用 Java 6 时,我必须像这样设置时区 TimeZone.getTimeZone("UTC")
    【解决方案2】:

    在他模式的末尾添加'Z'就可以了。

    DateTimeFormat.forPattern("HH:mm:ss'Z'");
    

    【讨论】:

      猜你喜欢
      • 2021-06-18
      • 2022-01-08
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 2012-10-01
      • 2017-03-22
      • 2015-02-19
      • 2016-06-11
      相关资源
      最近更新 更多