Преобразование даты в XMLGregorianCalendar
У меня есть дата в следующем формате в интерфейсе пользователя.
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" вместо "3/06/2011 05:00 AM". Что такое chnage, необходимый для получения соответствующего года.
Ответы
Ответ 1
Вы ничего не говорили о том, как год должен быть представлен в этом преобразовании даты, но вот какой-то псевдокод, чтобы вы начали. Обратите внимание, что я не рассматриваю конкретный часовой пояс в этом примере:
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);
Ответ 2
Я сделал следующий код для достижения того же. Может быть длинным кодом, но работает нормально.
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)
}