【发布时间】:2013-02-20 11:07:30
【问题描述】:
我正在开发一个与spring-struts web应用程序集成的webservice,在XSD中有一个XMLGregorianCalendar类型的属性,假设属性名称是trxDate。
在 SOAPUI 测试应用程序中,如果我将 trxDate 的值插入为:2013-02-21,然后我发送了soap xml 请求数据,并在服务方法中打印了该值:System. out.println(trxDate) 方法,打印结果与输入的相同:2013-02-21。
现在,我正在尝试创建一个函数来将 trxDate 与当前日期进行比较。我知道我们可以使用 trxDate.compare(currentDate) 方法进行比较。问题是我不如何创建 XMLGregorianCalendar 对象集,当前日期只有日期部分(日、月和年)用于比较。
我尝试使用此代码:
GregorianCalendar gc = new GregorianCalendar();
gc.set(GregorianCalendar.HOUR_OF_DAY, 0);
gc.set(GregorianCalendar.MINUTE, 0);
gc.set(GregorianCalendar.SECOND, 0);
gc.set(GregorianCalendar.MILLISECOND, 0);
XMLGregorianCalendar xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
System.out.println(xgc);
结果是:
2013-02-20T00:00:00.000+07:00
但我期待:
2013-02-20
如果使用日期 (xgc) 与 trxDate 进行比较:
int result = trxDate.compare(xgc);
结果为 2,表示:INDETERMINATE(来自 DatatypeConstants 类)。正确的结果应该是 -1、0 或 1。
那么我的代码有什么问题?
【问题讨论】:
标签: java web-services xsd jaxb gregorian-calendar