如何将 XMLGregorianCalendar 时间生成为 UTC
How to generate XMLGregorianCalendar time as UTC
我想创建一个具有以下特征的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);
}
要获得您提到的输出 (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;
}
如果您想要完整的日期时间,那么:
protected XMLGregorianCalendar timeUTC() throws DatatypeConfigurationException {
return DatatypeFactory.newInstance()
.newXMLGregorianCalendar(
(GregorianCalendar)GregorianCalendar.getInstance(TimeZone.getTimeZone(ZoneOffset.UTC)));
}
输出应该是这样的:2017-08-04T08:48:37.124Z
在模式末尾添加 'Z'
即可。
DateTimeFormat.forPattern("HH:mm:ss'Z'");
我想创建一个具有以下特征的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);
}
要获得您提到的输出 (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;
}
如果您想要完整的日期时间,那么:
protected XMLGregorianCalendar timeUTC() throws DatatypeConfigurationException {
return DatatypeFactory.newInstance()
.newXMLGregorianCalendar(
(GregorianCalendar)GregorianCalendar.getInstance(TimeZone.getTimeZone(ZoneOffset.UTC)));
}
输出应该是这样的:2017-08-04T08:48:37.124Z
在模式末尾添加 'Z'
即可。
DateTimeFormat.forPattern("HH:mm:ss'Z'");