2016-08-09 316 views
1

Ich versuche, einen Datensatz in meiner DDL von DDLRecordLocalServiceUtil.addRecord() hinzuzufügen, aber ich kann nicht finden, welches Format in die Felder Karte geben, es immer den Datensatz mit "1/1/70 ".Liferay DDLRecord Datumsformat

I'doing wie folgt aus:

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

Ich habe versucht, mit "1983.04.21" und mit - statt /, aber es ist immer mein Datum ignorieren ...

Wer kann helfen?

dank

+0

Haben Sie es mit der Zeit in Millisekunden versuchen: 'test.put ("date-value", meinDatum.getTime()) '? Wenn ich die Implementierung richtig lese, könnte das funktionieren. Andernfalls könnten Sie die Methode mit einem expliziten 'Fields'-Parameter versuchen. –

Antwort

0

Da Sie ein Serializable Objekt vorbei sind, der Wert ist ein String Liferay weiß nicht, dass "04/21/1983" ein Date ist und als String einfügen wird. Ich denke, Sie sollten ein Date Objekt übergeben und SimpleDateFormater verwenden die Zeichenfolge in ein Datum zu konvertieren:

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

LÖSUNG GEFUNDEN: SEE IN KOMMENTAR

+1

Sie meinen 'dd/mm/yyyy' und' test.put ("date-value", ...) '? Aber ich denke, das wird auch nicht funktionieren, da 'DDLRecordLocalServiceImpl.toFields (long, Map )' immer in einen String konvertiert, egal was du hinzufügst: 'String value = String.valueOf (fieldsMap .get (Name)); ' –

+0

Ah, tut mir leid, muss ein schlechter Tag gewesen sein.Und was den zweiten Teil anbetrifft, mag es auch richtig sein, dass der Zeitstempel die Soulution sein kann – KLajdPaja

+0

** Lösung gefunden dank @ tobias-liefke ** Verwenden Sie ein Kalender-Objekt, legen Sie es mit dem gewünschten Datum fest und übergeben Sie es an "date-value" (in meinem Beispiel) YourCalendarDate.getTimeInMillis(). – Cryonos