Apache Axis - 被序列化为 0001-01-01T00:00:00.000Z 的日历实例
Posted
技术标签:
【中文标题】Apache Axis - 被序列化为 0001-01-01T00:00:00.000Z 的日历实例【英文标题】:Apache Axis - Calendar instance that gets serialized to 0001-01-01T00:00:00.000Z 【发布时间】:2011-11-23 02:29:48 【问题描述】:我正在使用 Apache Axis 与用 .Net 编写的 Web 服务进行通信。
WS 中的一个函数在遇到DateTime.MinDate
(即“0001-01-01”)时会进行特殊处理。现在,我正在尝试将此特殊值发送到 WS,但似乎没有与 Java 中的 DateTime.MinDate
等效。
您可能知道,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>
这是我需要的。有谁知道如何实现这一目标?
【问题讨论】:
类似问题:***.com/questions/4006186/… 看过,但不是很相似...一般来说,它要求一个 Java 等价物,我知道如何获得 (new GregorianCalendar(1 ,1 ,1);),但是我需要以与 DateTime.MinDate(即 0001-01-01T00:00:00.000Z)相同的方式序列化为 SOAP xsd:dateTime 的东西,而上述解决方案似乎没有这样做。 【参考方案1】:以下将创建一个 GregorianCalendar 对象,该对象将序列化为等价的
DateTime.MinValue
.
GregorianCalendar gc=new GregorianCalendar(1,0,1);
gc.setTimeZone(TimeZone.getTimeZone("GMT-0"));
注意以下几点:
月份参数是从零开始的,而不是从 1 开始的。 GregorianCalendar 默认为本地时区,因此时区需要 手动调整。【讨论】:
太棒了!非常感谢!我是如此接近,但如果没有你的帮助,我是做不到的。以上是关于Apache Axis - 被序列化为 0001-01-01T00:00:00.000Z 的日历实例的主要内容,如果未能解决你的问题,请参考以下文章