Java - Date-Konstruktor akzeptiert eine Zeichenkette für das Datum, Aber veraltet. Versucht alternativen, aber kein Glück
String temp_date="07/28/2011 11:06:37 AM";
Date date = new Date(temp_date); //Depricated
SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy hh:mm:ss");
String comp_date= sdf.format(date);
System.out.println(comp_date);
Das funktioniert, Aber Wenn ich so etwas
String temp_date="07/28/2011 11:06:37 AM";
try{
SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy hh:mm:ss");
Date comp_date= sdf.parse(temp_date);
System.out.println(comp_date);
}catch(Exception e){
System.out.println(e);
}
Diese Ausnahme wird geworfen:
java.text.ParseException: Unparseable date: "07/28/2011 11:06:37 AM"
In Bezug auf die java.util.Datum veraltet, möchten Sie vielleicht zu Beginn der Einnahme einen Blick auf die abstrakte java.util.Kalender Klasse und Ihre direkte Implementierung: java.util.GregorianCalendar
Ich hörte von Beanutils von Apache commons für DateConversion. Incase Sie verwendet beanutils - Für den oben genannten Fall, wie würde es Aussehen?
ja, für das Parsen/formatieren dann DateFormat ist die Antwort. Ich wurde darauf hindeutet, GC, statt der einfachen Datum-datetime-manipulation. Ich bin nicht vertraut mit Joda Time, I ' ll look into it. Dank
Calendar
ist nicht sehr hilfreich, wenn es darum geht zu Parsen/formatieren von Datumsangaben von/bis String
. Unabhängig davon, würde ich es vorziehen, Joda Time: joda-time.sourceforge.net.Ich hörte von Beanutils von Apache commons für DateConversion. Incase Sie verwendet beanutils - Für den oben genannten Fall, wie würde es Aussehen?
ja, für das Parsen/formatieren dann DateFormat ist die Antwort. Ich wurde darauf hindeutet, GC, statt der einfachen Datum-datetime-manipulation. Ich bin nicht vertraut mit Joda Time, I ' ll look into it. Dank
InformationsquelleAutor pingu | 2011-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Parser-Muster ist falsch. Es entspricht nicht der Datum-string-Darstellung. Die
MMM
kennzeichnet eine 3-Buchstaben-lokalisierte Monat Abkürzung, während Sie haben 2-stellige Monatszahl in Ihrem tatsächlichen Datum, die Sie benötigenMM
. Sie haben auch Schrägstriche/
als Datum/Monat/Jahr separator und nicht-
. Für die AM/PM-marker müssen Sie auch einea
danach, so dass das Rechthh
analysiert werden kann.Sollte dies funktionieren:
Für eine Erklärung der Muster, Lesen Sie die
" = SimpleDateFormat
javadoc.Ich glaube, dass Ihre konkrete funktionale Anforderung ist die Umwandlung der angegebene Datums-Zeichenfolge Angabe das Muster
MM/dd/yyyy hh:mm:ss a
in ein anderes Datums-string-format, wie durch das MusterMMM-dd-yyyy hh:mm:ss
. In diesem Fall sollten Sie dann zweiSimpleDateFormat
Instanzen, die analysiert die Zeichenfolge in der angegebenen patternDate
und anderen, welche Formate der analysiertenDate
dem vorgegebenen Schema. Diese sollte das tun, was Sie wollen:Beachten Sie, dass ich geändert
hh
im AusgangHH
weil es sonst am Ende in 1-12 Stunden-Darstellung ohne eine AM/PM-marker. DieHH
stellt Sie als 0-23 Stunde.Du bist herzlich willkommen. Da du neu bist hier, bitte vergessen Sie nicht, markieren Sie die Antwort akzeptiert, wenn es geholfen (die meisten) bei der Beantwortung der Frage. Siehe auch meta.stackexchange.com/questions/5234/...
InformationsquelleAutor BalusC
Dem format, das Sie gab die " = SimpleDateFormat verwendet
-
zwischen den Monat, den Tag und das Jahr. Ihr string verwendet Schrägstriche.InformationsquelleAutor bdares
Auf den ersten Blick sieht es so aus als wenn dein format-string falsch ist.
MMM-Sie spezifiziert diese für den Monat, aber Sie sind nicht vorbei an einer 3 char Monat.
MM versuchen und sehen, ob das hilft.
Werfen Sie einen Blick auf dieses zusätzliche Datum-format Informationen:
http://www.java2s.com/Tutorial/Java/0040__Data-Type/SimpleDateFormat.htm
InformationsquelleAutor Jeffrey Kevin Pry