2016-08-09 6 views
1

Я пытаюсь добавить запись в свой DDL с помощью DDLRecordLocalServiceUtil.addRecord(), но я не могу найти формат, который нужно передать в карту полей, он всегда добавляет запись с «1/1/70" .Liferay DDLRecord формат даты

I'doing так:

Map<String,Serializable> test = new HashMap<String, Serializable>(); 
    test.put("date-value", "21/04/1983"); 
    test.put("number-value", 15);[/code] 

Я попытался с "04/21/1983" и - вместо/но всегда игнорировать мою дату ...

Любой человек может помочь?

благодаря

+0

Пробовали ли вы его со временем в миллисекундах: 'test.put ("date-value", myDate.getTime()) '? Если я правильно прочитал реализацию, это может сработать. В противном случае вы можете попробовать метод с явным параметром «Поля». –

ответ

0

Поскольку вы передаете Serializable объект Кто это значение является строка Liferay не знает, что "04/21/1983" является Date и вставит его в виде строки. Я думаю, вы должны пройти Date объект и использовать SimpleDateFormater для преобразования строки в дату:

SimpleDateFormat dateFormatter = new SimpleDateFormat("mm/dd/yyyy"); 
test.put(dateFormatter.parse("21/04/1983")); 

РЕШЕНИЕ НАЙДЕНО: УВИДЕТЬ В КОММЕНТАРИИ

+1

Вы имеете в виду 'dd/mm/yyyy' и' test.put ("date-value", ...) '? Но я бы предположил, что это не сработает, поскольку 'DDLRecordLocalServiceImpl.toFields (long, Map )' всегда преобразуется в строку, независимо от того, что вы добавляете: 'String value = String.valueOf (fieldsMap .get (name)); ' –

+0

Ах, извините, должно быть, был плохой день. А что касается второй части, вы можете быть правы, установив отметку времени, которая может быть душевной. – KLajdPaja

+0

** Решение найдено благодаря @ tobias-liefke ** Используйте объект «Календарь», установите его с нужной датой, а затем перейдите к «значению даты» (в моем примере) для параметра «YourCalendarDate.getTimeInMillis»(). – Cryonos

 Смежные вопросы

  • Нет связанных вопросов^_^