gpt4 book ai didi

java - Oracle 中的 XMLGregorianCalendar 至今

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:07 24 4
gpt4 key购买 nike

我从文件中读取了 XMLGregorianCalendar 日期:

<Status status="1028" timestamp="2018-03-25T01:00:00Z"/>
<Status status="1028" timestamp="2018-03-25T02:00:00Z"/>
<Status status="1028" timestamp="2018-03-25T03:00:00Z"/>

我需要将它们以完全相同的时间存储在oracle数据库中。我得到了这个字段:

<column name="TIMESTAMP" type="DATE"/>

我的实体中有字段:

@Convert(converter = XMLGregorianCalendarConverter.class)
private XMLGregorianCalendar timestamp;

和我的转换器:

@Converter
@Slf4j
public class XMLGregorianCalendarConverter implements AttributeConverter<XMLGregorianCalendar, Date> {

@Override
public Date convertToDatabaseColumn(XMLGregorianCalendar xcal) {
return toDate(xcal);
}

@Override
public XMLGregorianCalendar convertToEntityAttribute(Date date) {
try {
return toXMLGregorianCalendarWithUTCTimezone(date);
} catch (DatatypeConfigurationException e) {
e.printStackTrace();
}

return null;
}

private DatatypeFactory getDatatypeFactory() throws DatatypeConfigurationException {
return DatatypeFactory.newInstance();
}

private Date toDate(XMLGregorianCalendar calendar) {
if (calendar == null) {
return null;
}

return calendar.toGregorianCalendar().getTime();
}

private XMLGregorianCalendar toXMLGregorianCalendarWithUTCTimezone(Date date) throws DatatypeConfigurationException {

if (date == null) {
return null;
}

GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.setTime(date);

XMLGregorianCalendar xmlGregorianCalendar = getDatatypeFactory().newXMLGregorianCalendar(gregorianCalendar);
xmlGregorianCalendar.setMillisecond(DatatypeConstants.FIELD_UNDEFINED);
xmlGregorianCalendar.setTimezone(DatatypeConstants.EQUAL);
return xmlGregorianCalendar;
}

当我保存它们而不是获取第一、第二和第三个小时时,我得到:

我在这里读了很多类似问题的答案,但我仍然无法正确回答,因为我得到了奇怪的结果,比如第一、第三、第三个小时等等。我应该在转换器中更改什么才能使其正常工作?

最佳答案

好的,我通过添加解决了这个问题

TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

在我从toDate方法返回java.util.Date之前。

关于java - Oracle 中的 XMLGregorianCalendar 至今,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52075177/

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