Frage

Ich habe ein String Darstellung eines Datums, das ich erstellen muss Date oder Calendar Objekt aus.Ich habe durchgeschaut Date Und Calendar APIs, aber ich habe nichts gefunden, was dies tun kann, außer meine eigene hässliche Parse-Methode zu erstellen.Ich weiß, dass es einen Weg geben muss. Kennt jemand eine Lösung?

War es hilfreich?

Lösung

In Kürze:

DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
try {
  Date date = formatter.parse("01/29/02");
} catch (ParseException e) {
  e.printStackTrace();
}

Sehen SimpleDateFormat Javadoc für mehr.

Und es in ein zu verwandeln Calendar, Tun:

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

Andere Tipps

tl;dr

LocalDate.parse( "2015-01-02" )

java.time

Java 8 und höher hat eine neue java.time Rahmen, der diese anderen Antworten überholt macht.Dieses Framework ist inspiriert von Joda-Zeit, definiert von JSR 310, und erweitert um die ThreeTen-Extra Projekt.Siehe die Lernprogramm.

Die alten gebündelten Klassen java.util.Date/.Calendar sind bekanntermaßen problematisch und verwirrend.Vermeide sie.

LocalDate

Wie Joda-Time hat java.time eine Klasse LocalDate um einen reinen Datumswert ohne Uhrzeit und Zeitzone darzustellen.

ISO 8601

Wenn Ihre Eingabezeichenfolge im Standard liegt ISO 8601 Format von yyyy-MM-dd, können Sie diese Klasse bitten, die Zeichenfolge direkt zu analysieren, ohne dass ein Formatierer angegeben werden muss.

Die ISO 8601-Formate werden standardmäßig in java.time sowohl zum Parsen als auch zum Generieren von Zeichenfolgendarstellungen von Datums-/Uhrzeitwerten verwendet.

LocalDate localDate = LocalDate.parse( "2015-01-02" );

Formatierer

Wenn Sie ein anderes Format haben, geben Sie einen Formatierer aus dem an java.time.format Paket.Sie können entweder Ihr eigenes Formatierungsmuster angeben oder java.time automatisch entsprechend einem anpassen lassen Locale Festlegung einer menschlichen Sprache für die Übersetzung und kultureller Normen zur Entscheidung über Fragen wie Punkt oder Komma.

Formatierungsmuster

Lies das DateTimeFormatter Einzelheiten zu den im Formatmuster verwendeten Codes finden Sie im Klassendokument.Sie unterscheiden sich ein wenig von den alten, veralteten java.text.SimpleDateFormat Klassenmuster.

Beachten Sie, wie das zweite Argument zum parse Methode ist eine Methodenreferenz, Syntax zu Java 8 und höher hinzugefügt.

String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "MMMM d, yyyy" , Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );

Auf die Konsole übertragen.

System.out.println ( "localDate: " + localDate );

lokales Datum:02.01.2015

Automatisch lokalisieren

Oder anstatt ein Formatierungsmuster anzugeben, lassen Sie java.time die Lokalisierung für Sie durchführen.Anruf DateTimeFormatter.ofLocalizedDate, und stellen Sie sicher, dass Sie das Gewünschte/Erwartete angeben Locale anstatt sich auf die aktuelle Standardeinstellung der JVM zu verlassen, die sich jederzeit zur Laufzeit (!) ändern kann.

String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate ( FormatStyle.LONG );
formatter = formatter.withLocale ( Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );

Auf die Konsole übertragen.

System.out.println ( "input: " + input + " | localDate: " + localDate );

Eingang:2. Januar 2015 | LOCALDATE:02.01.2015

Der hoch angesehen Joda Time-Bibliothek ist auch einen Blick wert.Das ist die Basis für das Neue Datum und Uhrzeit API das ist für Java 7 vorgesehen.Das Design ist ordentlich, intuitiv, gut dokumentiert und vermeidet einen Großteil der Unbeholfenheit des Originals java.util.Date / java.util.Calendar Klassen.

Jodas DateFormatter kann einen String in einen Joda analysieren DateTime.

Versuche dies:

DateFormat.parse(String)

Der DateFormat Klasse hat eine parse Methode.

Sehen http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html für mehr Informationen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top