Конвертировать дату в XMLGregorianCalendar - PullRequest
23 голосов
/ 29 февраля 2012

У меня есть дата в следующем формате в пользовательском интерфейсе.

Eg: Thu. 03/01

Я конвертирую их в XMLGregorianCalendar, как объяснено ниже.

final DateFormat format = new SimpleDateFormat("E. M/d");
final String dateStr = closeDate;
final Date dDate = format.parse(dateStr);

GregorianCalendar gregory = new GregorianCalendar();
gregory.setTime(dDate);

XMLGregorianCalendar dealCloseDate = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(gregory);

Мой вывод «3/06/70 05:00 AM» вместо «06.03.2011 05:00 AM». Что такое chnage, необходимый для получения правильного года.

Ответы [ 2 ]

51 голосов
/ 29 февраля 2012

Вы ничего не упомянули о том, как должен быть представлен год в этом преобразовании даты, но вот некоторый псевдокод, с которого можно начать. Обратите внимание, что я не имею дело с часовым поясом в этом примере:

final DateFormat format = new SimpleDateFormat("E. M/d");
final String dateStr = "Thu. 03/01";
final Date date = format.parse(dateStr);

GregorianCalendar gregory = new GregorianCalendar();
gregory.setTime(date);

XMLGregorianCalendar calendar = DatatypeFactory.newInstance()
        .newXMLGregorianCalendar(
            gregory);
0 голосов
/ 27 ноября 2015

Я сделал следующий код, чтобы добиться того же.Может быть длинным кодом, но работает нормально.

def gregorianCalendar = new GregorianCalendar()
    def xmlGregorianCalendar = newInstance().newXMLGregorianCalendar(gregorianCalendar)

    if (//past date is needed) {
        def date = xmlGregorianCalendar.toGregorianCalendar().time
        def cal = Calendar.getInstance()
        cal.setTime(date)
        cal.add(Calendar.DATE,-3); //subtract 3 days
        date.setTime(cal.getTime().getTime())
        gregorianCalendar.setTime(date)
        xmlGregorianCalendar =  newInstance().newXMLGregorianCalendar(gregorianCalendar)
    }
...