我有SOAP服务,该服务可以接收日期-Date Data Type
description this type
我也有从XSD生成的JAXB类,并且在该类日期中,像XMLGregorianCalendar
一样出现:
@XmlAttribute(name = "billDate", required = true)
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar billDate;
现在我需要将此日期存储在数据库中。在Oracle DB中,我具有类型为DATE
的列。在PostgreSQl-TIMESTAMP
中输入。在实体中:
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "BILL_DATE")
private Date billDate;
我的问题:
如果您相信该文档(并且您可以相信我检查的话),那么我可以使用以下格式发送日期:2002-09-24
或2002-09-24Z
或2002-09-24+06:00
。没有时区和时区。现在,我需要将此日期保存到数据库中,然后,需要以正确的格式(带时区或不带时区)从数据库中还原它。当我将其保存到数据库时,我使用以下转换方法:
public static java.util.Date asDate(XMLGregorianCalendar xgc) {
if (xgc == null) {
return null;
} else {
return xgc.toGregorianCalendar().getTime();
}
}
然后保存java.util.Date
。但是当我选择这个日期并转换为
XMLGregorianCalendar
-我知道时区:
private static DatatypeFactory df = null;
static {
try {
df = DatatypeFactory.newInstance();
} catch (DatatypeConfigurationException dce) {
throw new IllegalStateException("Exception while obtaining DatatypeFactory instance", dce);
}
}
public static XMLGregorianCalendar asXMLGregorianCalendar(java.util.Date date) {
if (date == null) {
return null;
} else {
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(date.getTime());
return df.newXMLGregorianCalendar(gc);
}
}
因此,当我得到日期时:2002-09-24
将其保存到数据库,从数据库中选择并转换为XMLGregorianCalendar
-我有2002-09-24+03:00
,但是我需要2002-09-24
。如果我有日期2002-09-24+03:00
,我就需要2002-09-24+03:00
。