2016-05-13 9 views
1

Ich versuche, ein Date in Grails zu formatieren, hier ist mein Code in der Steuerung:Falsche Ausgabe für das Datumsformat in Grails

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
empRefInstance.startDate=sdf.parse(params.startDate) 
empRefInstance.endDate=sdf.parse(params.endDate) 
println ("dates " + empRefInstance.startDate +" "+empRefInstance.endDate) 

die Ausgabe 01-05-2016 gemäß dem Format sein sollte i definiert, aber die Ausgabe der beiden Datum in diesem Format

Sun May 01 00:00:00 EEST 2016 

ist etwas falsch in der Formatierer?

+0

Wie werden Sie diese Ausgabe zu bekommen? Du bringst das nicht in deine Frage ein. –

+0

@JoshuaMoore ich habe die Frage bearbeitet – Sherif

+0

Ist es sicher anzunehmen, dass 'startDate' und' endDate' beide Datentypen sind? Wenn dies der Fall ist, wird dies als Standardverhalten für das erwartet, was ein "Date" ausgibt, wenn es nicht formatiert ist. Wenn Sie es in einem bestimmten Format anzeigen möchten, können Sie die Methode '.format()' verwenden. Wie folgt: 'empRefInstance.startDate.format ('dd-MM-yyyy')' –

Antwort

0

Sie formatieren die Ausgabe nicht, stattdessen haben Sie nur geparst.

Formatierung: Konvertieren der Date zu String (die format Methode)
Parsing: Konvertieren der String zu Date (die parse Methode)

Um Format, müssen Sie wie zu tun dies:

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
// First you are converting the incoming date string to a date 
empRefInstance.startDate = sdf.parse(params.startDate) 
empRefInstance.endDate=sdf.parse(params.endDate) 

// Now we have to conert the date object to string and print it 
println ("dates " + sdf.format(empRefInstance.startDate) + " "+sdf.format(empRefInstance.endDate)) 

Wenn Sie ein Date Objekt in Groovy/Java zu drucken, ist es Standardimplementierung von toString() wird daher wurden Sie aufgerufen werden, eine Ausgabe wie Sun May 01 00:00:00 EEST 2016

auch immer, fügt Groovy eine format Methode in Date Klasse ermöglichen Formatierung zu lenken. Sie können das auch benutzen.

println("dates " + empRefInstance.startDate.format("dd-MM-yyyy") + " " + empRefInstance.endDate.format("dd-MM-yyyy")) 
0

Es ist nichts falsch mit dem Formatierer. Sie verwenden keinen für die Ausgabe. So etwas wie diese geben Ihnen die erwartete Ausgabe:

println empRefInstance.startDate.format('dd-MM-yyyy')

+0

wenn ich versuche 'empRefInstance.startDate = sdf.format (sdf.parse (params.startDate))' ich habe 'Kann Objekt '01 nicht werfen -05-2016 'mit der Klasse' java.lang.String 'in die Klasse' java.util.Date'' – Sherif

+0

Das liegt daran, dass Sie versuchen, ein 'Date' auf den Wert einer' String' zu setzen. Was macht überhaupt keinen Sinn. Was versuchst du damit zu erreichen? Bei Ihrer Frage ging es darum, wie Sie ein Datum für die korrekte Ausgabe formatieren können. Ihr Kommentar behandelt jedoch die Einstellung (Eingabe). –

+0

Was ich versuche zu tun ist, habe ich Date StartDate und EndDate in meiner Domäne, und die Rückgabe dieses Feldes aus der Sicht sind String, also möchte ich die Zeichenfolge in Datum zu konvertieren und setzen Sie es mit dem "EmpRefInstance.starDate" format 'dd-MM-yyyy' – Sherif