Apache Axis - 序列化为0001-01-01T00:00:00.000Z的日历实例

时间:2011-09-22 18:46:04

标签: java .net xsd calendar axis

我正在使用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>

这就是我需要的。有没有人知道如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

以下将创建一个GregorianCalendar对象,该对象将序列化为等效对象 DateTime.MinValue

GregorianCalendar gc=new GregorianCalendar(1,0,1);
gc.setTimeZone(TimeZone.getTimeZone("GMT-0"));

请注意以下事项:

  • 月份参数为零,而非基于1。
  • GregorianCalendar默认为本地时区,因此需要时区   手动调整。