У меня есть поле Entity, объявленное как Date, и отображается в поле даты в оракуле. Когда я печатаю значение для этого поля, я получаю формат даты, например 2013-04-23 09:05:03.0
.Oracle to Hibernate to ISO 8601 Формат даты
Мне нужно преобразовать эту дату в формат ISO 8601. Так что я использовал:
System.out.println("Converted Date:" + asXMLGregorianCalendar(retrunedDate);
private static DatatypeFactory df = DatatypeFactory.newInstance();
public static XMLGregorianCalendar asXMLGregorianCalendar(java.util.Date date) {
if (date == null) {
return null;
} else {
DatatypeFactory df = DatatypeFactory.newInstance();
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(date.getTime());
return df.newXMLGregorianCalendar(gc);
}
}
Следующий код возвращает:
System.out.println("Converted Date:" + asXMLGregorianCalendar(retrunedDate);
// Output
Converted Date: 2013-04-23T09:05:03.000-05:00
Вопросы:
- Существует
000
вместо фактического числа. Не знаете почему? - Что такое
0
в конце от спящего режима2013-04-23 09:05:03.0
? Как получить полную дату?
Когда я прохожу Date
, я получаю результат мне нужно .:
System.out.println("Converted Date:" + asXMLGregorianCalendar(new Date());
// Output
Converted Date: 2013-08-23T17:19:15.664-05:00
Это то, что мне нужно. Вместо 000
мне нужно получить миллисекунды. Неужели Hibernate что-то делает с датой?
0 - миллисекунда. Что вы подразумеваете под «полной датой»? Распечатанная дата выглядит довольно полной. Опять же, формат ISO 8601 слишком расплывчатый. ISO 8601 описывает большое количество форматов даты и времени. Можете ли вы сказать мне, какой формат даты вы пытаетесь достичь? Тогда я могу помочь вам в том, как его достичь. – SerotoninChase
Спасибо, я обновил свой вопрос. Пожалуйста, проверьте –
Проблема будет заключаться в том, что все, что помещает данные * в *, ваша база данных обрезается до ближайшей секунды. Код для его распечатки в порядке. – Affe