Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Ich habe SimpleDateFormat und DateTimeFormatter in dem letzten Artikel, den ich geschrieben habe verwendet. Beide waren Datums- / Zeitformatierer, und ich konnte nicht herausfinden, was anders war, also habe ich nachgeschlagen.
Es gibt einen Unterschied zwischen neu und der Verwendung der bereitgestellten Methode.
Erstellen Sie eine neue Instanz von SimpleDateFormat. Nicht threadsicher. Daher ist es bei der Multithread-Verarbeitung erforderlich, jedes Mal unmittelbar vor der Verwendung eine Instanz zu erstellen.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
DateTimeFormatter wird mit der ofPattern-Methode instanziiert. Gewindesicher. Im Gegensatz zu SimpleDateFormat muss nicht jedes Mal eine Instanz erstellt werden, wenn Sie sie während der Multithread-Verarbeitung verwenden.
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");
Versuchen Sie, den String mit SimpleDateFormat und DateTimeFormatter zu konvertieren.
Verarbeitung zum Konvertieren von Zeichenfolge in Datum. Übergeben Sie einfach den String-Typ als Argument an die Analysemethode. Die Ausnahmebehandlung von ParseException ist erforderlich, wird jedoch im folgenden Beispiel weggelassen.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
Date date = sdf.parse("2018/05/14 12:34:56.123");
// Mon May 14 12:34:56 UTC 2018
System.out.println(date);
String → Temporal Accessor-Konvertierungsprozess.
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");
TemporalAccessor ta = dtf.parse("2018/05/14 12:34:56.123");
// {},ISO resolved to 2018-05-14T12:34:56.123
System.out.println(ta);
Was ist TemporalAccessor? Es wurde. Das Ausgabeergebnis lautet auch "ISO aufgelöst auf ~~". Es scheint die übergeordnete Schnittstelle von LocalDateTime zu sein. Es ist auch das übergeordnete Element von LocalDate, LocalTime und ZonedDateTime. Also kannst du das machen.
TemporalAccessor tAccessor = LocalDateTime.of(2018, 5, 14, 12, 34, 56);
Beim Parsen mit DateTimeFommater scheint es viele Muster zu geben, in denen die Analysemethode von LocalDateTime verwendet wird. Es sieht aus wie unten. Ich möchte daran erinnern, dass dieser anscheinend häufiger verwendet wird. (Prozess zum Konvertieren von String in LocalDateTime.)
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");
LocalDateTime date = LocalDateTime.parse("2018/05/14 12:34:56.123", dtf);
// 2018-05-14T12:34:56.123
System.out.println(date);
Versuchen Sie, SimpleDateFormat und DateTimeFormatter so zu formatieren, wie es der Name vermuten lässt.
Verarbeitung zum Konvertieren von Datum in Zeichenfolge. Übergeben Sie den Typ java.util.Date als Argument an die Formatmethode.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
Date date = sdf.parse("2018/05/14 12:34:56.123");
// Mon May 14 12:34:56 UTC 2018
System.out.println(date);
String str = sdf.format(date);
// 2018/05/14 12:34:56.123
System.out.println(str);
Übergeben Sie TemporalAccessor als Argument an die Formatmethode.
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");
LocalDateTime date = LocalDateTime.parse("2018/05/14 12:34:56.123", dtf);
// 2018-05-14T12:34:56.123
System.out.println(date);
String str = dtf.format(date);
// 2018/05/14 12:34:56.123
System.out.println(str);
Ich schrieb es als schlampig, aber um zusammenzufassen, was ich fand,
SimpleDateFormat | DateTimeFormatter | |
---|---|---|
Schimmel | java.util.Umstellung auf Datum | TemporalAccessorKonvertierungnach(LocalDateTime),LocalDate,LocalTime,ZonedDateTimeetc.) |
Instanzgenerierung | new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS") |
DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS") |
Thread sicher? | × | ◯ |
parse | dtf.parse(str) java.util.Es wird Datum. |
dtf.parse(str) TemporalAccessorwerden. Analysemethoden wie LocalDateTime sind einfacher zu verwenden. |
format | sdf.format(date) |
dtf.format(TemporalAccessor) |
Immerhin ist es schwierig, mit Java Datum / Uhrzeit umzugehen. Ich habe das Gefühl, dass PHP so schwierig geworden ist. (Vielleicht denke ich nur, weil ich mich nicht so sehr mit Datum / Uhrzeit beschäftigt habe ...)
Recommended Posts