我正在使用 Apache Axis 与 .Net 编写的 Web 服务进行通信。
其中一个函数是WS在遇到DateTime.MinDate
时有特殊处理(即“0001-01-01”)。现在,我尝试将这个特殊值发送到 WS,但似乎没有与 DateTime.MinDate
等效的值。在Java中。
您可能知道,Axis 包裹 xsd:dateTime
进入Calendar
对象,所以我尝试发送 new GregorianCalendar(1 ,1 ,1);
但这并没有达到目的。我试过calendar.setTime(new Date(0))
,我尝试了更多组合,但似乎没有任何内容被序列化为
<endDate xsi:type="xsd:dateTime">0001-01-01T00:00:00.000Z</endDate>
这就是我所需要的。有谁知道如何实现这一点吗?
最佳答案
下面将创建一个 GregorianCalendar 对象,该对象将序列化为等效的
DateTime.MinValue
。
GregorianCalendar gc=new GregorianCalendar(1,0,1);
gc.setTimeZone(TimeZone.getTimeZone("GMT-0"));
注意以下几点:
- 月份参数从 0 开始,而不是从 1 开始。
- GregorianCalendar 默认为本地时区,因此时区需要 手动调整。
关于java - Apache Axis - 序列化为 0001-01-01T00 :00:00. 000Z 的日历实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7519800/