gpt4 book ai didi

java - XML 生成后的 JAXB 日期时间格式

转载 作者:数据小太阳 更新时间:2023-10-29 02:13:53 27 4
gpt4 key购买 nike

我有一个简短的问题:

从 xsd 生成 xjc 类后,我的对象需要日历,这就是我提供的。但在将其编码为 XML 之后,我的日期格式如下:

<InfoDateTime v="2013-09-03T00:00:00+02:00"/>

而我希望:

<InfoDateTime v="2013-09-03T00:00:00Z"/>

我不使用带注释的 jaxb,而是使用绑定(bind)文件,但是否可以不创建可以解析日期和字符串的类?

谢谢!

最佳答案

当您使用 Calendar 时,您可以设置您希望使用的 TimeZone:

Java 模型

下面是一个简单的 Java 对象,它有 2 个映射的 Calendar 字段。

import java.util.Calendar;
import javax.xml.bind.annotation.*;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {

Calendar defaultTimeZone;
Calendar setTimeZone;

}

演示代码

演示

在下面的演示代码中,我们将在 defaultTimeZone 上创建两个 Calendar 实例,它将具有默认时区(我的环境是加拿大/东部)和 setTimeZone 我们将指定 GMT。

import java.util.*;
import javax.xml.bind.*;

public class Demo {

public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Root.class);

Root root = new Root();
root.defaultTimeZone = Calendar.getInstance();

root.setTimeZone = Calendar.getInstance();
root.setTimeZone.setTimeZone(TimeZone.getTimeZone("GMT"));

Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
}

}

输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<defaultTimeZone>2013-09-03T09:40:59.443-04:00</defaultTimeZone>
<setTimeZone>2013-09-03T13:40:59.443Z</setTimeZone>
</root>

关于java - XML 生成后的 JAXB 日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593418/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com