Grails - illegal Argumente für java.sql.Datum
Ich versuche zum erstellen einer sql.Datum durch die Schaffung eines Kalender-Objekts auf dem aktuellen Datum. Dieses fährt mich verrückt, wenn ich fest das Datum als string alles, was gut ist:
def dat = java.sql.Date.valueOf("2011-01-31");
Aber, wenn ich den selben string im code, ich bin immer ein illegal argument error.
def currentDay = {
def today = Calendar.getInstance();
def dateYear = today.get(Calendar.YEAR);
def dateMonth = today.get(Calendar.MONTH) + 1;
def dateDay =today.get(Calendar.DATE);
def todayDate = (dateYear + "-" + dateMonth + "-" + dateDay);
def todayDateString = todayDate.toString();
def todayDate2 = java.sql.Date.valueOf(todayDateString);
[ today : todayDate2 ]
}
Laufen, das ist das nachgeben dieser stacktrace:
java.lang.IllegalArgumentException
at java.sql.Date.valueOf(Date.java:138)
at java_sql_Date$valueOf.call(Unknown Source)
at samma.TapesController$_closure7.doCall(TapesController.groovy:178)
at samma.TapesController$_closure7.doCall(TapesController.groovy)
at java.lang.Thread.run(Thread.java:619)
Ich weiß, ich mache etwas völlig dumm, aber ich kann nicht herausfinden, was ist, noch was ein workaround könnte sein.
Dank
Donald.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersetzen Sie alle den code oben mit
Warum sind Sie konvertieren zu einem string überhaupt? So stellen Sie sicher Ihre
Calendar
hat die Feldwerte, die Sie möchten, und rufen Sie dannAlternativ gegeben, dass Sie brauchen nur die millis, im Recht zu sein, würde ich versuchen, Joda Time wenn überhaupt möglich - es wird einfacher sein, als die Manipulation eines Kalenders, IMO. Sie können die Konvertierung von Joda Time instant (oder was auch immer) ein
long
Wert sehr leicht.java.sql.Datum.valueOf(String Datum) wirft eine IllegalArgumentException, wenn das Datum nicht in die JDBC-date escape-format (yyyy-mm-dd). Das Datum, die Sie bereitstellen, hat das format JJJJ-m-TT (nur eine Ziffer, Monat für 1-9) es ist daher ungültig.
Als Problemumgehung verwenden " = SimpleDateFormat um einen zweistelligen Monat oder direkt mit Daten arbeiten, ohne zwischen String-Konvertierung wie Jon Skeet schlägt.