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 的日历实例的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apache Spark SQL 将表序列化为嵌套 JSON

在apache中怎么下载axis1.4jar

python 将Axis刻度标签格式化为百分比。

嵌套的 JObjects 被序列化为空数组

基于axis的WebService的案例

自定义类型被序列化为空元素