我正在开发一个与 spring-struts web 应用程序集成的 web 服务,在 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。
那么我的代码有什么问题?