Что ж, распечатка date.getYear()
и date.getMonth()
должна действительно вывести 111 и 0, так как getYear()
возвращает количество лет с 1900 года, а getMonth()
возвращает 0-месячный месяц. Конечно, это безумный API, но так оно и задокументировано.
Ваш код конверсии не совсем понятен - вы никогда не используете df
, так какой в этом смысл? Кроме того, я не вижу упоминания о XMLGregorianDate
в вашем коде ... не могли бы вы дать короткую, но полную программу, которая демонстрирует проблему? Что-то, что мы можем построить и запустить?
В качестве дополнительной проблемы, в общем, я бы от души рекомендовал бы использовать Joda Time вместо java.util. {Дата, Календарь}, где это возможно. Это может не помочь в данной конкретной ситуации, но позволяет избежать многих неудачных дизайнерских решений встроенных классов и позволяет вам точно выразить то, что вы имеете в виду (местные даты, местное время и т. Д.).