Apache Axis - экземпляр календаря, который сериализуется в 0001-01-01T00: 00: 00.000Z - PullRequest
0 голосов
/ 22 сентября 2011

Я использую Apache Axis для связи с веб-сервисом, написанным на .Net.

Одна из функций в этом 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 Ответ

1 голос
/ 25 сентября 2011

Следующее создаст объект GregorianCalendar, который будет сериализован в эквивалент DateTime.MinValue.

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

Обратите внимание на следующее:

  • Параметр month основан на нуле,не на основе 1.
  • По умолчанию GregorianCalendar используется местный часовой пояс, поэтому часовой пояс необходимо настроить вручную.
...