Studieren der Datums-API des Pakets java.time. Ich habe verschiedene Dinge angemessen ausprobiert. Die folgende Quelle.
package java8.dateapi;
import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
/**
* java.Studieren der Datums-API des Zeitpakets
* @author komikcomik
*
*/
public class DateApiStudy {
public static void main(String[] args) {
/*Versuchen Sie vorerst, die aktuelle Uhrzeit abzurufen*/
System.out.println("---------------------Überprüfung 1 Geeignete Anzeige unter Verwendung der aktuellen Uhrzeit-----------------------");
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("Ausgabe vorerst [" + zonedDateTime + "】"); //Ausgabe ohne nachzudenken
/*Jahr, Monat, Tag, Stunde, Minute, Sekunde, Millisekunde usw.*/
System.out.println("Jahr 【" + zonedDateTime.getYear() + "】");
System.out.println("Mond 【" + zonedDateTime.getMonthValue() + "】"); // getMonth()Beachten Sie, dass OKTOBER zurückgegeben wird.
System.out.println("Tag 【" + zonedDateTime.getDayOfMonth() + "】");
System.out.println("Zeit 【" + zonedDateTime.getHour() + "】");
System.out.println("Protokoll [" + zonedDateTime.getMinute() + "】");
System.out.println("Sekunden [" + zonedDateTime.getSecond() + "】");
System.out.println("Millimeter oder weniger [" + zonedDateTime.getNano() + "】");
System.out.println("Nur Millisekunde [" + zonedDateTime.getLong(ChronoField.MILLI_OF_SECOND) + "】");
System.out.println("Wenn Sie etwas wie UTC + Zeit löschen möchten [" + zonedDateTime.getOffset() + "】");
/*Machen Sie eine bestimmte Zeit*/
System.out.println("---------------------Überprüfung 2 Geben Sie eine bestimmte Zeit ein-----------------------");
ZonedDateTime shiteiTime = ZonedDateTime.of(2017, 10, 19, 16, 58, 59, 123456789, ZoneId.systemDefault());
System.out.println("Ausgabe 2 vorerst [" + shiteiTime + "】"); //Ausgabe ohne nachzudenken
/*In Standardzeichenfolge konvertieren*/
System.out.println("---------------------Überprüfung 3-----------------------");
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");
DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.nnnnnnnnn");
System.out.println("Bis zu einer Millisekunde formen und löschen [" + shiteiTime.format(dtf1) + "】");
System.out.println("In Nanosekunden formen und löschen [" + shiteiTime.format(dtf2) + "】");
/*Von String in LocalDateTime-Objekt konvertieren*/
System.out.println("---------------------Validierung 4 Konvertieren von String in LocalDateTime-----------------------");
String dateStr = "2017/10/19 16:58:59.123456789";
LocalDateTime ldt = LocalDateTime.parse(dateStr, dtf2);
if (ldt.equals(shiteiTime.toLocalDateTime())) {
System.out.println("Entspricht der Konvertierung von String in LocalDateTime=" + ldt);
} else {
System.out.println("Stimmt nicht mit dem überein, was von String in LocalDateTime konvertiert wurde");
}
/*Konvertieren von String in ZonedDateTime-Objekt*/
System.out.println("---------------------Validierung 5 Konvertieren von String in ZonedDateTime-----------------------");
String dateStrWithTimeZone = "2017/10/19 16:58:59.123456789 JST";
DateTimeFormatter dtfWithTimeZone = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.nnnnnnnnn zzz");
ZonedDateTime zdt = ZonedDateTime.parse(dateStrWithTimeZone, dtfWithTimeZone);
if (zdt.equals(shiteiTime)) {
System.out.println("Entspricht der Konvertierung von String in ZonedDateTime=" + zdt);
} else {
System.out.println("Stimmt nicht mit dem überein, was von String in ZonedDateTime konvertiert wurde");
}
/* java.util.In Datum konvertieren*/
System.out.println("---------------------Überprüfung 5 Java.util.In Datum konvertieren-----------------------");
Date date = Date.from(shiteiTime.toInstant());
System.out.println(date);
/*Berechnen Sie am Ende des Monats*/
System.out.println("---------------------Überprüfung 6 Berechnen Sie das Monatsende mit Jahr Monat-----------------------");
YearMonth ym = YearMonth.from(ldt);
System.out.println("Ende des Monats=" + ym.atEndOfMonth());
ym = YearMonth.from(ldt.minusMonths(1));
System.out.println("Ende letzten Monats=" + ym.atEndOfMonth());
ym = YearMonth.from(ldt.plusMonths(1));
System.out.println("Ende nächsten Monats=" + ym.atEndOfMonth());
System.out.println("---------------------Überprüfung 7 Berechnen Sie den Anfang und das Ende des Monats mit Temporal Adjusters-----------------------");
System.out.println(ldt.with(TemporalAdjusters.firstDayOfMonth()));
System.out.println(ldt.with(TemporalAdjusters.lastDayOfMonth()));
}
}
Unten das Ausführungsergebnis
---------------------Überprüfung 1 Geeignete Anzeige unter Verwendung der aktuellen Uhrzeit-----------------------
Ausgabe vorerst [2017-10-19T17:59:27.773+09:00[Asia/Tokyo]】
Jahr [2017]
Monat [10]
Sonne [19]
Zeit [17]
Minute [59]
Sekunden [27]
Millimeter oder weniger [773000000]
Nur Millisekunde [773]
Wenn Sie etwas wie UTC + Zeit löschen möchten [+09:00】
---------------------Überprüfung 2 Geben Sie eine bestimmte Zeit ein-----------------------
Ausgabe 2 vorerst [2017-10-19T16:58:59.123456789+09:00[Asia/Tokyo]】
---------------------Überprüfung 3-----------------------
In Millisekunden geformt und gelöscht [2017/10/19 16:58:59.123】
In Nanosekunden formen und löschen [2017/10/19 16:58:59.123456789】
---------------------Validierung 4 Konvertieren von String in LocalDateTime-----------------------
Entspricht der Konvertierung von String in LocalDateTime=2017-10-19T16:58:59.123456789
---------------------Validierung 5 Konvertieren von String in ZonedDateTime-----------------------
Entspricht der Konvertierung von String in ZonedDateTime=2017-10-19T16:58:59.123456789+09:00[Asia/Tokyo]
---------------------Überprüfung 5 Java.util.In Datum konvertieren-----------------------
Thu Oct 19 16:58:59 JST 2017
---------------------Überprüfung 6 Berechnen Sie das Monatsende mit Jahr Monat-----------------------
Ende des Monats=2017-10-31
Ende letzten Monats=2017-09-30
Ende nächsten Monats=2017-11-30
---------------------Überprüfung 7 Berechnen Sie den Anfang und das Ende des Monats mit Temporal Adjusters-----------------------
2017-10-01T16:58:59.123456789
2017-10-31T16:58:59.123456789
Wenn ich Daten in der Datumsspalte von DB registriere, ordne ich sie häufig java.util.Date mit myBatis zu, möchte aber beim nächsten Mal versuchen, ob sie mit ZonedDateTime oder LocalDateTime zugeordnet werden können.
Recommended Posts