Joda Time um eine Minute hochrechnen - Formatter Problem

jimb0p

Erfahrenes Mitglied
Hallo Zusammen,

ich habe ein Problem bei der Verwendung des Formatters bei Joda Time. Ich möchte eigentlich ein bestimmtes Datum um genau eine Minute jeweils erhöhen. Bisher habe ich geschaut, dass ich mein Datum in diesem Format: 10-Jul-12 09:36:08 AM als Datetime ausgeben kann. Das funktioniert soweit auch, jedoch nicht bei allen Daten. Hier mein Code der Methode:

Java:
public void goToTheFuture(String date, int minutes){
	DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MMM-YY hh:mm:ss a");
	DateTime dt = formatter.parseDateTime(date);
	System.out.println(date+" - "+dt.toString());
}

und hier die Ausgabe:

Code:
02-Jul-13 01:28:13 PM - 2013-07-02T13:28:13.000+02:00
16-Nov-12 03:56:41 PM - 2012-11-16T15:56:41.000+01:00
21-Nov-12 06:53:02 PM - 2012-11-21T18:53:02.000+01:00
25-Apr-13 04:58:17 PM - 2013-04-25T16:58:17.000+02:00
29-Jan-10 10:36:55 AM - 2010-01-29T10:36:55.000+01:00
21-Jun-12 03:59:43 PM - 2012-06-21T15:59:43.000+02:00
01-Aug-13 12:12:10 PM - 2013-08-01T12:12:10.000+02:00
29-Jan-13 06:17:03 PM - 2013-01-29T18:17:03.000+01:00
10-Jul-12 09:36:08 AM - 2012-07-10T09:36:08.000+02:00

Bis dann eine Exception geworfen wird:
Code:
java.lang.IllegalArgumentException: Invalid format: "13-Dec-12 01:01:25 PM" is malformed at "Dec-12 01:01:25 PM"
	at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:873)
	at de.main.ChangeDate.goToTheFuture(ChangeDate.java:107)
	at de.main.ChangeDate.startChangingDate(ChangeDate.java:93)
	at de.main.ListenerStart.actionPerformed(ListenerStart.java:18)

Für einen Tipp oder Hinweis wäre ich dankbar.
Gruß!
 
Schwierig, auf dem ersten Blick scheint alles richtig zu sein. Ich habe überlegt, warum gerade dieser Wert in eine Exception läuft. Ich habe eine Vermutung: Alle Kürzel bis auf 'Dec' entsprechen dem gleichen Monat in der Deutschen und der Englischen Localen. Ich denke dein Programm würde hier 'Dez' erwarten. Versuche es daher mal so:

Java:
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MMM-YY hh:mm:ss a").withLocale(Locale.UK);
 

Neue Beiträge

Zurück