Дата-формат для зайчика - PullRequest
       11

Дата-формат для зайчика

1 голос
/ 08 марта 2011

Я использую Jackrabbit для хранения своих документов.Теперь я хотел бы искать документы, которые были созданы, например, после определенной даты, используя XPATH.Для этого я попробовал что-то вроде:

String dateString = date.toString();
//element(*,nt:file)[@jcr:created >= xs:dateTime(dateString)]

date - это объект класса java.util.Date
dateString форматируется как: Ср 16 марта, 00:00:00 CET 2011

Но это дает мне InvalidQueryException, указывающее, что dateString неверен:

Неверный запрос: Лексическая ошибка в строке 1, столбце 136. Обнаружено: "0"(48), после: ":" для выписки

Итак, вопрос в следующем: каков правильный формат даты для xs: dateTime?

Заранее спасибо

Ответы [ 4 ]

2 голосов
/ 17 декабря 2015

Для Крольчонка это сработало для меня: yyyy-MM-dd'T'HH:mm:ss.SSSX (2015-12-16T15:16:50.465-02:00), когда какой-то предыдущий код взял Календарь и сделал: prop.getValue().getString()

Не удалось заставить Z работать («дата не разбирается»).

2 голосов
/ 09 марта 2011

Просто для полноты:

Я нашел другой (зависимый от Jackrabbit / JCR) способ получения правильно отформатированной строки даты:

Calendar cal = Calendar.getInstance();
cal.setTime(date);
String dateString = ValueFactoryImpl.getInstance().createValue(cal).getString();

Эта дата-строка может использоваться содин аргумент конструктор xs:dateTime

1 голос
/ 04 января 2012

Также у меня есть некоторые проблемы с форматом даты JAckRabbit, и мне нужно было получить несколько сущностей между двумя датами:

@ madeDate> = xs: dateTime (startDate) @createdDate <= xs: dateTime (endDate) </p>

Что я заметил, это:

  1. использование формата гггг-ММ-дд'Т'ЧЧ: мм: сс.ССС'З 'для анализа даты дало неверные результаты (также должно быть гггг-ММ-дд'Т'ХХ: мм ss.SSSZ) но вы получите, например: 2012-01-04T23: 59: 59,999 + 0200 вместо 2012-01-04T23: 59: 59.999 + 02: 00 (сохранено в JCR)

  2. Решение с помощью ValueFactoryImpl.getInstance (). CreateValue (cal) .getString () работает.

1 голос
/ 08 марта 2011

xs:dateTime использует определенный шаблон - см. здесь и здесь . Поэтому вместо того, чтобы использовать date.toString (), для создания этого формата вам нужно будет использовать подходящий DateFormat. Примерно так:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String dateString = format.format(date);

Однако, похоже, что конструктор для xs: dateTime фактически требует двух аргументов: один для даты и один для времени. Смотри здесь .

Так что, я думаю, вы могли бы использовать это:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
DateFormat tf = new SimpleDateFormat("HH:mm:ss");
String dateString = df.format(date);
String timeString = tf.format(date);
...