codestory

Die Anleitung zu Java LocalDateTime

  1. LocalDateTime
  2. Static Factory methods
  3. isAfter(..), isBefore(..)
  4. format(DateTimeFormatter)
  5. getX() *
  6. get(TemporalField)
  7. getLong(TemporalField)
  8. toLocalDate()
  9. toLocalTime()
  10. atZone(ZoneId)
  11. atOffset(ZoneOffset)
  12. plusX(..) *
  13. plus(TemporalAmount)
  14. plus(long, TemporalUnit)
  15. minusX(..) *
  16. minus(TemporalAmount)
  17. minus(long, TemporalUnit)
  18. withX(..) *
  19. with(TemporalAdjuster)
  20. with(TemporalField, long)
  21. adjustInto(Temporal)
  22. query(TemporalQuery<R>)
  23. until(Temporal, TemporalUnit)
  24. isSupported(TemporalField)
  25. isSupported(TemporalUnit)

1. LocalDateTime

Die Klasse LocalDateTime repräsentiert das lokale Datum und die lokale Uhrzeit im ISO-Kalendersystem. Es enthält keine Zeitzoneninformationen.
public final class LocalDateTime
    implements Temporal, TemporalAdjuster, ChronoLocalDateTime<LocalDate>, Serializable
Die Klasse LocalDateTime befindet sich im Paket java.time. Wie andere Klassen, die in der Java 8 Date Time API eingeführt wurden, ist LocalDateTime unveränderlich, was bedeutet, dass alle Berechnungen für LocalDateTime ein neues Objekt LocalDateTime erstellen. Daher ist es sicher, in einer Umgebung multithreading verwendet zu werden.
  • Java 8 Date Time API Overview

2. Static Factory methods

Die Klasse LocalDateTime stellt keinen Konstruktor bereit, bietet jedoch statische Factorymethoden zum Erstellen eines neuen Objekts:
public static LocalDateTime now()  

public static LocalDateTime now(ZoneId zone)  

public static LocalDateTime now(Clock clock)

public static LocalDateTime of(int year, Month month, int dayOfMonth,
                               int hour, int minute)

public static LocalDateTime of(int year, Month month, int dayOfMonth,
                               int hour, int minute, int second)

public static LocalDateTime of(int year, Month month, int dayOfMonth,
                               int hour, int minute, int second, int nanoOfSecond)

public static LocalDateTime of(int year, int month, int dayOfMonth,
                               int hour, int minute)

public static LocalDateTime of(int year, int month, int dayOfMonth,
                               int hour, int minute, int second)

public static LocalDateTime of(int year, int month, int dayOfMonth,
                               int hour, int minute, int second, int nanoOfSecond)

public static LocalDateTime of(LocalDate date, LocalTime time)

public static LocalDateTime ofInstant(Instant instant, ZoneId zone)

public static LocalDateTime ofEpochSecond(long epochSecond, int nanoOfSecond, ZoneOffset offset)

public static LocalDateTime from(TemporalAccessor temporal)  

public static LocalDateTime parse(CharSequence text)

public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)
Erstellen Sie ein Objekt LocalDateTime, das das aktuelle Datum und die aktuelle Uhrzeit aus der Systemuhr und der Standardzeitzone darstellt (auf Ihrem Computer)
// Ex: Current Date Time from the system clock in the default time-zone.
LocalDateTime dt1 = LocalDateTime.now();
System.out.println("dt1: " + dt1);

// Ex: Current Date Time from the specified clock.
Clock clock2 = Clock.systemDefaultZone();
LocalDateTime dt2 = LocalDateTime.now(clock2);
System.out.println("dt2: " + dt2);

// Ex: Current Date Time from the system clock in the specified time-zone.
ZoneId zoneId3 = ZoneId.systemDefault();
LocalDateTime dt3 = LocalDateTime.now(zoneId3);
System.out.println("dt3: " + dt3);
Output:
dt1: 2021-06-02T21:33:45.249967
dt2: 2021-06-02T21:33:45.250606
dt3: 2021-06-02T21:33:45.250714
Erstellen Sie ein Objekt LocalDateTime aus den angegebenen Werten für Datum, Monat, Jahr, Stunde, Minute, Sekunde,..:
// Ex: of(int year, Month month, int dayOfMonth, int hour, int minute)
LocalDateTime dt1 = LocalDateTime.of(2000, Month.MAY, 20, 13, 45, 30);  
System.out.println("dt1: " + dt1); // 2000-05-20T13:45:30

// Ex: of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond)
LocalDateTime dt2 = LocalDateTime.of(2000, 5, 20, 13, 45, 30, 12345);
System.out.println("dt2: " + dt2); // 2000-05-20T13:45:30.000012345
Erstellen Sie ein Objekt LocalDateTime, indem Sie die beiden Objekte LocalDate und LocalTime kombinieren:
LocalDate date = LocalDate.parse("2020-05-15");
LocalTime time = LocalTime.parse("13:45:30");
 
// Ex: of(LocalDate date, LocalTime time)
LocalDateTime dt  = LocalDateTime.of(date, time);
System.out.println("Date time: " + dt); // 2020-05-15T13:45:30
Erstellen Sie ein Objekt LocalDateTime aus einem Objekt TemporalAccessor:
// TemporalAccessor
ZonedDateTime z = ZonedDateTime.of(2016, 10, 12,
                                   15, 20, 30, 0,
                                   ZoneId.systemDefault());
System.out.println("ZonedDateTime: " + z); // 2016-10-12T15:20:30+06:00[Asia/Bishkek]

// from(TemporalAccessor temporal)
LocalDateTime dateTime = LocalDateTime.from(z);
System.out.println("dateTime: " + dateTime); // 2016-10-12T15:20:30
Erstellen Sie ein Objekt LocalDateTime aus Objekte Instant und ZoneId:
Instant instant = Instant.now();
ZoneId zoneId = ZoneId.systemDefault();

// ofInstant(Instant instant, ZoneId zone)
LocalDateTime dateTime = LocalDateTime.ofInstant(instant, zoneId);

System.out.println("dateTime: " + dateTime); // 2021-06-02T21:07:39.970782
// Ex: ofEpochSecond(long epochSecond, int nanoOfSecond, ZoneOffset offset)
LocalDateTime dt1 = LocalDateTime.ofEpochSecond(0, 0, ZoneOffset.ofHours(-1));
System.out.println("dt1: " + dt1); // 1969-12-31T23:00

// Ex: ofEpochSecond(long epochSecond, int nanoOfSecond, ZoneOffset offset)
LocalDateTime dt2 = LocalDateTime.ofEpochSecond(0, 0, ZoneOffset.ofHours(1));
System.out.println("dt2: " + dt2); // 1970-01-01T01:00
Erstellen Sie ein Objekt LocalDateTime, indem Sie einen mit Datum und Uhrzeit formatierten Text analysieren:
// Default Format: yyyy-MM-ddTmm:HH:ss.SSS
LocalDateTime dt1 = LocalDateTime.parse("2011-11-20T13:45:30");
System.out.println("dt1: " + dt1); // 2011-11-20T13:45:30

// Default Format: yyyy-MM-ddTmm:HH:ss.SSS
LocalDateTime dt2 = LocalDateTime.parse("2011-11-20T13:45:30.12345");
System.out.println("dt2: " + dt2); // 2011-11-20T13:45:30.123450

// Ex: parse(CharSequence text, DateTimeFormatter formatter)
DateTimeFormatter fmt3 = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss");

LocalDateTime dt3 = LocalDateTime.parse("20/11/2020 13:45:30", fmt3);
System.out.println("dt3: " + dt3); // 2020-11-20T13:45:30
  • DateTimeFormatter
  • Java Date Time Format Pattern

3. isAfter(..), isBefore(..)

Die Methode isBefore(ChronoLocalDate) wird verwendet, um zu überprüfen, ob sich dieses Objekt LocalDateTime vor einem anderen angegebenen Objekt auf der Zeitachse befindet.
// Inherited from ChronoLocalDateTime interface
public boolean isBefore(ChronoLocalDateTime<?> other)
Die Methode isAfter(ChronoLocalDate) wird verwendet, um zu überprüfen, ob dieses Objekt LocalDateTime nach einem anderen angegebenen Objekt auf der Zeitachse liegt.
// Inherited from ChronoLocalDateTime interface
public boolean isAfter(ChronoLocalDateTime<?> other)
localDateTime1 is before localDateTime2.
  • Die Anleitung zu Java ChronoLocalDate

4. format(DateTimeFormatter)

Formatieren Sie dieses Objekt LocalDateTime mit einem angegebenen DateTimeFormatte.
public String format(DateTimeFormatter formatter)
Zum Beispiel:
LocalDateTime_format_ex1.java
LocalDateTime localDateTime = LocalDateTime.of(2020, 5, 15, 20, 59);
System.out.println("localDateTime: " + localDateTime); // 2020-May-15 20:59
System.out.println();

// For example:
// '2011-12-03T10:15:30',
// '2011-12-03T10:15:30+01:00' if has offset
// '2011-12-03T10:15:30+01:00[Europe/Paris]' if has time-zone
DateTimeFormatter fmt1 = DateTimeFormatter.ISO_DATE_TIME;
System.out.println("ISO_DATE_TIME: " + localDateTime.format(fmt1)); // 2020-05-15T20:59:00  

// Custom Formatter:
DateTimeFormatter fmt2 = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss.SSS");  
// 15/05/2020 20:59:00.000
System.out.println("dd/MM/yyyy HH:mm:ss.SSS: " + localDateTime.format(fmt2));
  • Die Anleitung zu Java DateTimeFormatter
  • Java Date Time Format Pattern

5. getX() *

Die Methode getYear() gibt das durch diese LocalDateTime dargestellte Jahr zurück, was dem Aufruf der Methode get(ChronoField.YEAR) entspricht. Wenn Sie das Jahr der Ära abrufen möchten, rufen Sie get(ChronoField.YEAR_OF_ERA) auf.
public int getYear()
public int getMonthValue()  
public Month getMonth()  
public int getDayOfMonth()  
public int getDayOfYear()   
public DayOfWeek getDayOfWeek()

public int getHour()  
public int getMinute()
public int getSecond()
public int getNano()
Zum Beispiel:
LocalDateTime_getX_ex1.java
LocalDateTime dateTime = LocalDateTime.parse("2020-05-15T13:45:30.12345");
System.out.println("Date Time: " + dateTime); // 2020-05-15T13:45:30.123450
System.out.println();
 
System.out.println("getDayOfYear(): " + dateTime.getDayOfYear()); // 136
System.out.println("getDayOfMonth(): " + dateTime.getDayOfMonth()); // 15
System.out.println("getYear(): " + dateTime.getYear());  // 2020
System.out.println("getMonth(): " + dateTime.getMonth());  // Month.MAY (enum)
System.out.println("getMonthValue(): " + dateTime.getMonthValue()); // 5
System.out.println("getDayOfWeek(): " + dateTime.getDayOfWeek()); // DayOfWeek.FRIDAY (enum)

System.out.println("getHour(): " + dateTime.getHour());  // 13
System.out.println("getMinute(): " + dateTime.getMinute()); // 45
System.out.println("getSecond(): " + dateTime.getSecond()); // 30
System.out.println("getNano(): " + dateTime.getNano());  // 123450000

6. get(TemporalField)

Gibt den Wert des angegebenen Felds diesesObjekts LocalDateTime als 32-Bit-Integer zurück.
public int get(TemporalField field)
Hinweis: Einige Felder werden möglicherweise nicht von LocalDateTime unterstützt und eine UnsupportedTemporalTypeException wird ausgelöst. Verwenden Sie zur Sicherheit die Methode isSupported(TemporalField), um zu überprüfen, ob ein bestimmtes Feld von LocalDateTime unterstützt wird.
Zum Beispiel:
LocalDateTime_get_field_ex1.java
LocalDateTime dt = LocalDateTime.parse("2020-05-15T13:45:30.12345");
System.out.println("Date Time: " + dt); // 2020-05-15T13:45:30.123450
System.out.println();

// int get(TemporalField field)
System.out.println("DAY_OF_MONTH: " + dt.get(ChronoField.DAY_OF_MONTH)); // 15
System.out.println("DAY_OF_WEEK: " + dt.get(ChronoField.DAY_OF_WEEK)); // 5
System.out.println("DAY_OF_YEAR: " + dt.get(ChronoField.DAY_OF_YEAR)); // 136
System.out.println("ERA: " + dt.get(ChronoField.ERA)); // 1
System.out.println("YEAR: " + dt.get(ChronoField.YEAR)); // 2020
System.out.println("YEAR_OF_ERA: " + dt.get(ChronoField.YEAR_OF_ERA)); // 2020
System.out.println("ALIGNED_DAY_OF_WEEK_IN_MONTH: " + dt.get(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)); // 1
System.out.println("ALIGNED_DAY_OF_WEEK_IN_YEAR: " + dt.get(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); // 3
System.out.println("ALIGNED_WEEK_OF_MONTH: " + dt.get(ChronoField.ALIGNED_WEEK_OF_MONTH)); // 3
System.out.println("ALIGNED_WEEK_OF_YEAR: " + dt.get(ChronoField.ALIGNED_WEEK_OF_YEAR)); // 20

// Use getLong() instead
// System.out.println("PROLEPTIC_MONTH: " + dt.get(ChronoField.PROLEPTIC_MONTH)); // 24244
// System.out.println("EPOCH_DAY: " + dt.get(ChronoField.EPOCH_DAY)); // 18397

// Time:
System.out.println("AMPM_OF_DAY: " + dt.get(ChronoField.AMPM_OF_DAY)); // 13
System.out.println("CLOCK_HOUR_OF_AMPM: " + dt.get(ChronoField.CLOCK_HOUR_OF_AMPM)); // 1
System.out.println("CLOCK_HOUR_OF_DAY: " + dt.get(ChronoField.CLOCK_HOUR_OF_DAY)); // 13
System.out.println("HOUR_OF_AMPM: " + dt.get(ChronoField.HOUR_OF_AMPM)); // 1
System.out.println("HOUR_OF_DAY: " + dt.get(ChronoField.HOUR_OF_DAY)); // 13

System.out.println("MILLI_OF_DAY: " + dt.get(ChronoField.MILLI_OF_DAY)); // 49530123
System.out.println("MILLI_OF_SECOND: " + dt.get(ChronoField.MILLI_OF_SECOND)); // 123
System.out.println("MINUTE_OF_DAY: " + dt.get(ChronoField.MINUTE_OF_DAY)); // 825

System.out.println("MINUTE_OF_HOUR: " + dt.get(ChronoField.MINUTE_OF_HOUR)); // 45

System.out.println("MICRO_OF_SECOND: " + dt.get(ChronoField.MICRO_OF_SECOND)); // 123450
System.out.println("NANO_OF_SECOND: " + dt.get(ChronoField.NANO_OF_SECOND)); // 123450000

System.out.println("SECOND_OF_DAY: " + dt.get(ChronoField.SECOND_OF_DAY)); // 49530
System.out.println("SECOND_OF_MINUTE: " + dt.get(ChronoField.SECOND_OF_MINUTE)); // 30

// Use getLong() instead
// System.out.println("NANO_OF_DAY: " + dt.get(ChronoField.NANO_OF_DAY)); // 49530123450000

// Unsupported
// System.out.println("INSTANT_SECONDS: " + dt.get(ChronoField.INSTANT_SECONDS));
// System.out.println("OFFSET_SECONDS: " + dt.get(ChronoField.OFFSET_SECONDS));
  • ChronoField
  • TemporalField

7. getLong(TemporalField)

Gibt den Wert des angegebenen Felds dieses Objekts LocalDateTime als 64-Bit-Integer zurück.
public long getLong(TemporalField field)
Hinweis: Einige Felder werden möglicherweise nicht von LocalDateTime unterstützt und eine UnsupportedTemporalTypeException wird ausgelöst. Verwenden Sie zur Sicherheit die Methode isSupported(TemporalField), um zu überprüfen, ob ein bestimmtes Feld von LocalDateTime unterstützt wird.
Zum Beispiel:
LocalDateTime_getLong_field_ex1.java
LocalDateTime dt = LocalDateTime.parse("2020-05-15T13:45:30.12345");
System.out.println("Date Time: " + dt); // 2020-05-15T13:45:30.123450
System.out.println();

// long getLong(TemporalField field)
System.out.println("DAY_OF_MONTH: " + dt.getLong(ChronoField.DAY_OF_MONTH)); // 15
System.out.println("DAY_OF_WEEK: " + dt.getLong(ChronoField.DAY_OF_WEEK)); // 5
System.out.println("DAY_OF_YEAR: " + dt.getLong(ChronoField.DAY_OF_YEAR)); // 136
System.out.println("ERA: " + dt.getLong(ChronoField.ERA)); // 1
System.out.println("YEAR: " + dt.getLong(ChronoField.YEAR)); // 2020
System.out.println("YEAR_OF_ERA: " + dt.getLong(ChronoField.YEAR_OF_ERA)); // 2020
System.out.println("ALIGNED_DAY_OF_WEEK_IN_MONTH: " + dt.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH)); // 1
System.out.println("ALIGNED_DAY_OF_WEEK_IN_YEAR: " + dt.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)); // 3
System.out.println("ALIGNED_WEEK_OF_MONTH: " + dt.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH)); // 3
System.out.println("ALIGNED_WEEK_OF_YEAR: " + dt.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR)); // 20

//
System.out.println("PROLEPTIC_MONTH: " + dt.getLong(ChronoField.PROLEPTIC_MONTH)); // 24244
System.out.println("EPOCH_DAY: " + dt.getLong(ChronoField.EPOCH_DAY)); // 18397

// Time:
System.out.println("AMPM_OF_DAY: " + dt.getLong(ChronoField.AMPM_OF_DAY)); // 13
System.out.println("CLOCK_HOUR_OF_AMPM: " + dt.getLong(ChronoField.CLOCK_HOUR_OF_AMPM)); // 1
System.out.println("CLOCK_HOUR_OF_DAY: " + dt.getLong(ChronoField.CLOCK_HOUR_OF_DAY)); // 13
System.out.println("HOUR_OF_AMPM: " + dt.getLong(ChronoField.HOUR_OF_AMPM)); // 1
System.out.println("HOUR_OF_DAY: " + dt.getLong(ChronoField.HOUR_OF_DAY)); // 13

System.out.println("MILLI_OF_DAY: " + dt.getLong(ChronoField.MILLI_OF_DAY)); // 49530123
System.out.println("MILLI_OF_SECOND: " + dt.getLong(ChronoField.MILLI_OF_SECOND)); // 123
System.out.println("MINUTE_OF_DAY: " + dt.getLong(ChronoField.MINUTE_OF_DAY)); // 825

System.out.println("MINUTE_OF_HOUR: " + dt.getLong(ChronoField.MINUTE_OF_HOUR)); // 45

System.out.println("MICRO_OF_SECOND: " + dt.getLong(ChronoField.MICRO_OF_SECOND)); // 123450
System.out.println("NANO_OF_SECOND: " + dt.getLong(ChronoField.NANO_OF_SECOND)); // 123450000

System.out.println("SECOND_OF_DAY: " + dt.getLong(ChronoField.SECOND_OF_DAY)); // 49530
System.out.println("SECOND_OF_MINUTE: " + dt.getLong(ChronoField.SECOND_OF_MINUTE)); // 30

//  
System.out.println("NANO_OF_DAY: " + dt.getLong(ChronoField.NANO_OF_DAY)); // 49530123450000

// Unsupported
// System.out.println("INSTANT_SECONDS: " + dt.getLong(ChronoField.INSTANT_SECONDS));
// System.out.println("OFFSET_SECONDS: " + dt.getLong(ChronoField.OFFSET_SECONDS));
  • TemporalField
  • ChronoField

8. toLocalDate()

Gibt den LocalDate-Teil dieses Objekts LocalDateTime zurück.
// Inherited from ChronoLocalDateTime interface
public LocalDate toLocalDate()
Zum Beispiel:
LocalDateTime_toLocalDate_ex1.java
LocalDateTime localDateTime = LocalDateTime.of(2020, 05, 15, 13, 30, 45, 123);
System.out.println("localDateTime: " + localDateTime); // 2020-05-15T13:30:45.000000123
System.out.println();

LocalDate localDate = localDateTime.toLocalDate();
System.out.println("localDate: " + localDate); // 2020-05-15

9. toLocalTime()

Gibt den LocalTime-Teil dieses Objekts LocalDateTime zurück.
// Inherited from ChronoLocalDateTime interface
public LocalTime toLocalTime()
Zum Beispiel:
LocalDateTime_toLocalTime_ex1.java
LocalDateTime localDateTime = LocalDateTime.of(2020, 05, 15, 13, 30, 45, 123);
System.out.println("localDateTime: " + localDateTime); // 2020-05-15T13:30:45.000000123
System.out.println();

LocalTime localTime = localDateTime.toLocalTime();
System.out.println("localTime: " + localTime); // 13:30:45.000000123

10. atZone(ZoneId)

Die Methode atZone(ZoneId) wird verwendet, um dieses Objekt LocalDateTime mit dem angegebenen Objekt ZoneId zu kombinieren, um ein Objekt ZonedDateTime zu erstellen.
// Inherited from ChronoLocalDateTime interface
public ZonedDateTime atZone(ZoneId zone)
Zum Beispiel:
LocalDateTime_atZone_ex1.java
LocalDateTime localDateTime = LocalDateTime.of(2020, 05, 15, 13, 30, 45, 123);
System.out.println(localDateTime); // 2020-05-15T13:30:45.000000123
System.out.println();

ZoneId parisZoneId = ZoneId.of("Europe/Paris");
ZonedDateTime zonedDateTime = localDateTime.atZone(parisZoneId);
System.out.println(zonedDateTime); // 2020-05-15T13:30:45.000000123+02:00[Europe/Paris]

11. atOffset(ZoneOffset)

Die Methode atOffset(ZoneOffset) wird verwendet, um dieses Objekt LocalDateTime mit dem angegebenen Objekt ZoneOffset zu kombinieren, um ein Objekt OffsetDateTime zu erstellen.
public OffsetDateTime atOffset(ZoneOffset offset)
Zum Beispiel:
LocalDateTime_atOffset_ex1.java
LocalDateTime localDateTime = LocalDateTime.of(2020, 05, 15, 13, 30, 45, 123);
System.out.println(localDateTime); // 2020-05-15T13:30:45.000000123
System.out.println();

ZoneOffset zoneOffset2H30 = ZoneOffset.ofHoursMinutes(2, 30);

OffsetDateTime offsetDateTime = localDateTime.atOffset(zoneOffset2H30);
System.out.println(offsetDateTime); // 2020-05-15T13:30:45.000000123+02:30
  • ZoneOffset
  • OffsetDateTime

12. plusX(..) *

No ADS
Die Methode plusSeconds(seconds) geben eine Kopie dieses Objekts LocalDateTime mit einer angegebenen Anzahl von hinzugefügten Sekunden zurück.
Als Namen werden auch die Methoden plusNanos(nanos), plusHours(hours),... verstanden.
public LocalDateTime plusYears(long years)  

public LocalDateTime plusMonths(long months)  

public LocalDateTime plusWeeks(long weeks)  

public LocalDateTime plusDays(long days)  

public LocalDateTime plusHours(long hours)

public LocalDateTime plusMinutes(long minutes)  

public LocalDateTime plusSeconds(long seconds)  

public LocalDateTime plusNanos(long nanos)
Zum Beispiel:
LocalDateTime_plusX_ex1.java
LocalDateTime localDateTime = LocalDateTime.of(2020, 5, 15, 13, 30, 45);
System.out.println("localDateTime: " + localDateTime); // 2020-05-15T13:30:45
System.out.println();

// plusDays(long daysToAdd)
LocalDateTime localDateTime1 = localDateTime.plusDays(10);
System.out.println("localDateTime1: " + localDateTime1); // 2020-05-25T13:30:45

LocalDateTime localDateTime2 = localDateTime.plusDays(-15);
System.out.println("localDateTime2: " + localDateTime2); // 2020-04-30T13:30:45

// plusHours(long hoursToAdd)
LocalDateTime localDateTime3 = localDateTime.plusHours(12);
System.out.println("localDateTime3: " + localDateTime3); // 2020-05-16T01:30:45

13. plus(TemporalAmount)

No ADS
Gibt eine Kopie dieses Objekts LocalDateTime mit einem angegebenen hinzugefügten Wert zurück.
// Inherited from Temporal interface
public LocalDateTime plus(TemporalAmount amountToAdd)
Zum Beispiel:
LocalDateTime_plus_amount_ex1.java
LocalDateTime localDateTime = LocalDateTime.of(2020, 5, 15, 13, 30, 45);
System.out.println("localDateTime: " + localDateTime); // 2020-05-15T13:30:45
System.out.println();

// plus(TemporalAmount amountToAdd)
TemporalAmount amount1 = Period.ofDays(5);
LocalDateTime localDateTime1 = localDateTime.plus(amount1);
System.out.println("localDateTime1: " + localDateTime1); // 2020-05-20T13:30:45

// plus(TemporalAmount amountToAdd)
LocalDateTime from = LocalDateTime.of(2020, 5, 10, 0, 0, 0);
LocalDateTime to = LocalDateTime.of(2020, 5, 12, 12, 0, 0);

TemporalAmount amount2 = Duration.between(from, to); // 2 days 12 hours
LocalDateTime localDateTime2 = localDateTime.plus(amount2);
System.out.println("localDateTime2: " + localDateTime2); // 2020-05-18T01:30:45

14. plus(long, TemporalUnit)

Gibt eine Kopie dieses Objekts LocalDateTime mit einem angegebenen Wert zurück, der in der angegebenen Einheit hinzugefügt wurde.
// Inherited from Temporal interface
public LocalDateTime plus(long amountToAdd, TemporalUnit unit)
Zum Beispiel:
LocalDateTime_plus_unit_ex1.java
LocalDateTime localDateTime =  LocalDateTime.of(2020, 5, 15, 13, 30, 45);
System.out.println("localDateTime: " + localDateTime); // 2020-05-15T13:30:45
System.out.println();

// plus(long amountToAdd, TemporalUnit unit)
LocalDateTime localDateTime1 = localDateTime.plus(20, ChronoUnit.DAYS);
System.out.println("localDateTime1: " + localDateTime1); // 2020-06-04T13:30:45

// plus(long amountToAdd, TemporalUnit unit)
LocalDateTime localDateTime2 = localDateTime.plus(50, ChronoUnit.MINUTES);
System.out.println("localDateTime2: " + localDateTime2); // 2020-05-15T14:20:45

15. minusX(..) *

No ADS
Die Methoden minusSeconds(seconds) geben eine Kopie dieses Objekts LocalDateTime zurück, wobei die angegebene Anzahl von Sekunden abgezogen wird.
Als Namen werden auch die Methoden minusNanos(nanos), minusHours(hours),... verstanden.
public LocalDateTime minusYears(long years)  

public LocalDateTime minusMonths(long months)  

public LocalDateTime minusWeeks(long weeks)  

public LocalDateTime minusDays(long days)  

public LocalDateTime minusHours(long hours)  

public LocalDateTime minusMinutes(long minutes)  

public LocalDateTime minusSeconds(long seconds)  

public LocalDateTime minusNanos(long nanos)
Zum Beispiel:
LocalDateTime_minusX_ex1.java
LocalDateTime localDateTime = LocalDateTime.of(2020, 5, 15, 13, 30, 45);
System.out.println("localDateTime: " + localDateTime); // 2020-05-15T13:30:45
System.out.println();

// minusDays(long daysToSubtract)
LocalDateTime localDateTime1 = localDateTime.minusDays(10);
System.out.println("localDateTime1: " + localDateTime1); // 2020-05-05T13:30:45

LocalDateTime localDateTime2 = localDateTime.minusDays(-15);
System.out.println("localDateTime2: " + localDateTime2); // 2020-05-30T13:30:45

// minusHours(long monthsToSubtract)
LocalDateTime localDateTime3 = localDateTime.minusHours(15);
System.out.println("localDateTime3: " + localDateTime3); // 2020-05-14T22:30:45

16. minus(TemporalAmount)

No ADS
Gibt eine Kopie dieses Objekts LocalDateTime zurück, wobei der angegebene Wert abgezogen wurde.
// Inherited from Temporal interface
public LocalDateTime minus(TemporalAmount amountToSubtract)
Zum Beispiel:
LocalDateTime_minus_amount_ex1.java
LocalDateTime localDateTime = LocalDateTime.of(2020, 5, 15, 13, 30, 45);
System.out.println("localDateTime: " + localDateTime); // 2020-05-15T13:30:45
System.out.println();

// minus(TemporalAmount amountToSubtract)
TemporalAmount amount1 = Period.ofDays(20);
LocalDateTime localDateTime1 = localDateTime.minus(amount1);
System.out.println("localDateTime1: " + localDateTime1); // 2020-04-25T13:30:45

// minus(TemporalAmount amountToSubtract)
LocalDateTime from = LocalDateTime.of(2020, 5, 10, 0, 0, 0);
LocalDateTime to = LocalDateTime.of(2020, 5, 12, 15, 0, 0);

TemporalAmount amount2 = Duration.between(from, to); // 2 days 15 hours
LocalDateTime localDateTime2 = localDateTime.minus(amount2);
System.out.println("localDateTime2: " + localDateTime2); // 2020-05-12T22:30:45

17. minus(long, TemporalUnit)

Gibt eine Kopie dieses Objekts LocalDateTime mit einem angegebenen Wert zurück, der in der angegebenen Einheit abgezogen wird
// Inherited from Temporal interface
public LocalDateTime minus(long amountToSubtract, TemporalUnit unit)
Zum Beispiel:
LocalDateTime_minus_unit_ex1.java
LocalDateTime localDateTime =  LocalDateTime.of(2020, 5, 15, 13, 30, 45);
System.out.println("localDateTime: " + localDateTime); // 2020-05-15T13:30:45
System.out.println();

// minus(long amountToSubtract, TemporalUnit unit)
LocalDateTime localDateTime1 = localDateTime.minus(20, ChronoUnit.DAYS);
System.out.println("localDateTime1: " + localDateTime1); // 2020-04-25T13:30:45

// minus(long amountToSubtract, TemporalUnit unit)
LocalDateTime localDateTime2 = localDateTime.minus(50, ChronoUnit.MINUTES);
System.out.println("localDateTime2: " + localDateTime2); // 2020-05-15T12:40:45

18. withX(..) *

No ADS
Die Methode withYear(year) gibt eine Kopie dieses Objekts LocalDateTime zurück, wobei das Jahr auf den angegebenen Wert geändert wurde.
Die anderen Methoden withMonths(months), withDayOfMonth(dayOfMonth),... werden auch als ihre Namen verstanden.
public LocalDateTime withYear(int year)

public LocalDateTime withMonth(int month)

public LocalDateTime withDayOfMonth(int dayOfMonth)

public LocalDateTime withDayOfYear(int dayOfYear)

public LocalDateTime withHour(int hour)

public LocalDateTime withMinute(int minute)

public LocalDateTime withSecond(int second)

public LocalDateTime withNano(int nanoOfSecond)
Die Methode withYear(year) gibt eine Kopie dieses Objekts LocalDateTime mit geändertem Jahr zurück. Wenn der Tag des Monats für das Jahr ungültig ist, wird er auf den letzten gültigen Tag des Monats geändert.
LocalDateTime_withYear_ex1.java
LocalDateTime ldt1 = LocalDateTime.parse("2020-02-29T13:30:45").withYear(2024);  
System.out.println("ldt1: " + ldt1); // 2024-02-29T13:30:45

LocalDateTime ldt2 = LocalDateTime.parse("2020-02-29T13:30:45").withYear(2019); // Important Note!
System.out.println("ldt2: " + ldt2); // 2019-02-28T13:30:45

LocalDateTime ldt3 = LocalDateTime.parse("2020-02-28T13:30:45").withYear(2019);  
System.out.println("ldt3: " + ldt3); // 2019-02-28T13:30:45

LocalDateTime ldt4 = LocalDateTime.parse("2020-02-21T13:30:45").withYear(2019);  
System.out.println("ldt4: " + ldt4); // 2019-02-21T13:30:45
Die Methode withMonth(month) gibt eine Kopie dieses Objekts LocalDateTime mit geändertem Monat zurück. Wenn der Tag des Monats für das Jahr ungültig ist, wird er auf den letzten gültigen Tag des Monats geändert.
LocalDateTime_withMonth_ex1.java
LocalDateTime ldt1 = LocalDateTime.parse("2020-03-31T13:30:45").withMonth(2); // Important Note!
System.out.println("ldt1: " + ldt1); // 2020-02-29T13:30:45

LocalDateTime ldt2 = LocalDateTime.parse("2020-03-31T13:30:45").withMonth(2); // Important Note!
System.out.println("ldt2: " + ldt2); // 2020-02-29T13:30:45

LocalDateTime ldt3 = LocalDateTime.parse("2020-03-29T13:30:45").withMonth(2);  
System.out.println("ldt3: " + ldt3); // 2020-02-29T13:30:45

LocalDateTime ldt4 = LocalDateTime.parse("2020-03-21T13:30:45").withMonth(2);  
System.out.println("ldt4: " + ldt4); // 2020-02-21T13:30:45

19. with(TemporalAdjuster)

No ADS
Gibt eine Kopie dieses Objekts LocalDateTime zurück, wobei die Datums- und Uhrzeitdaten vom Objekt TemporalAdjuster angepasst wurden.
// Inherited from Temporal interface
public LocalDateTime with(TemporalAdjuster adjuster)
Zum Beispiel:
LocalDateTime_with_adjuster_ex1.java
LocalDateTime now = LocalDateTime.now();
System.out.println("Now is: " + now);
System.out.println();

// TemporalAdjuster: First day-of-month
TemporalAdjuster adjuster1 = TemporalAdjusters.firstDayOfMonth();
LocalDateTime firstDayOfMonth = now.with(adjuster1);
System.out.println("firstDayOfMonth: " + firstDayOfMonth);

// TemporalAdjuster: Next monday.
TemporalAdjuster adjuster2 = TemporalAdjusters.next(DayOfWeek.MONDAY);
LocalDateTime nextMonday = now.with(adjuster2);
System.out.println("nextMonday: " + nextMonday);

// TemporalAdjuster: First day of next year.
TemporalAdjuster adjuster3 = TemporalAdjusters.firstDayOfNextYear();
LocalDateTime firstDayOfNextYear = now.with(adjuster3);
System.out.println("firstDayOfNextYear: " + firstDayOfNextYear);
Output:
Now is: 2021-07-08T18:01:05.965972

firstDayOfMonth: 2021-07-01T18:01:05.965972
nextMonday: 2021-07-12T18:01:05.965972
firstDayOfNextYear: 2022-01-01T18:01:05.965972

20. with(TemporalField, long)

No ADS
Gibt eine Kopie dieses Objekts LocalDateTime zurück, wobei das angegebene Feld auf den neuen Wert geändert wurde.
// Inherited from Temporal interface
public LocalDateTime with(TemporalField field, long newValue)
In einigen Fällen kann das Ändern des angegebenen Felds dazu führen, dass das resultierende Datum ungültig wird, z. B. würde das Ändern des Monats vom 31. Januar auf Februar den Tag des Monats ungültig machen. In solchen Fällen wurde dieses Problem mit dieser Methode behandelt. Normalerweise wird das vorherige gültige Datum ausgewählt, das in diesem Beispiel der letzte gültige Tag im Februar ist.
LocalDateTime_with_field_ex1.java
LocalDateTime myDateTime = LocalDateTime.parse("2021-05-29T13:30:45");

System.out.println("myDateTime is: " + myDateTime); // 2021-05-29T13:30:45
System.out.println("myDateTime day of week: " + myDateTime.get(ChronoField.DAY_OF_WEEK));  // 6
System.out.println("myDateTime day of month: " + myDateTime.get(ChronoField.DAY_OF_MONTH)); // 29
System.out.println();

LocalDateTime localDateTime1 =    myDateTime.with(ChronoField.DAY_OF_WEEK, 3);   
System.out.println("localDateTime1: " + localDateTime1); // 2021-05-26T13:30:45

LocalDateTime localDateTime2 =    myDateTime.with(ChronoField.DAY_OF_MONTH, 10);  
System.out.println("localDateTime2: " + localDateTime2);  // 2021-05-10T13:30:45

// February 2021 has only 28 days.
LocalDateTime localDateTime3 =    myDateTime.with(ChronoField.MONTH_OF_YEAR, 2);  
System.out.println("localDateTime3: " + localDateTime3);  // 2021-02-28T13:30:45  (***)
Output:
myDateTime is: 2021-05-29T13:30:45
myDateTime day of week: 6
myDateTime day of month: 29

localDateTime1: 2021-05-26T13:30:45
localDateTime2: 2021-05-10T13:30:45
localDateTime3: 2021-02-28T13:30:45
  • ChronoField
  • TemporalField

21. adjustInto(Temporal)

Die Methode adjustInto(Temporal) gibt eine Kopie des angegebenen Objekts Temporal mit angepassten Datums- und Uhrzeitdaten zurück, sodass es diesem Objekt LocalDateTime ähnelt.
// Inherited from TemporalAdjuster interface
public Temporal adjustInto(Temporal temporal)
Grundsätzlich sind die beiden folgenden Ansätze ähnlich:
Temporal copiedTemporal = thisLocalDateTime.adjustInfo(aTemporal);  // (1)
// Same as:
Temporal copiedTemporal = aTemporal.with(thisLocalDateTime);           // (2)
Zum Beispiel:
LocalDateTime_adjustInto_ex1.java
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of("Asia/Ho_Chi_Minh"));
System.out.println("Now is: " + zonedDateTime);

LocalDateTime localDateTime = LocalDateTime.parse("1999-01-01T00:30:30");
zonedDateTime = (ZonedDateTime) localDateTime.adjustInto(zonedDateTime);
System.out.println("After adjusting: " + zonedDateTime);
Output:
Now is: 2021-07-08T20:05:56.439468+07:00[Asia/Ho_Chi_Minh]
After adjusting: 1999-01-01T00:30:30+07:00[Asia/Ho_Chi_Minh]

22. query(TemporalQuery<R>)

No ADS
Fragen Sie dieses Objekt LocalDateTime mit dem angegebenen Objekt TemporalQuery ab, um Informationen zu extrahieren.
// Inherited from TemporalAccessor interface
public <R> R query(TemporalQuery<R> query)
Weitere Beispiele zu diesem Thema finden Sie im Artikel zu TemporalQuery:

23. until(Temporal, TemporalUnit)

Berechnet die Zeit bis zu einem anderen Datum/Uhrzeit in Bezug auf die angegebene Einheit.
// Inherited from Temporal interface
public long until(Temporal endExclusive, TemporalUnit unit)
Zum Beispiel:
LocalDateTime_until_ex1.java
LocalDateTime localDateTime_from = LocalDateTime.of(2020, 5, 15, 0, 0, 0);
System.out.println("Date Time From: " + localDateTime_from); // 2020-05-15T00:00

LocalDateTime localDateTime_to = LocalDateTime.of(2020, 5, 15, 13, 30, 59);  
System.out.println("Date Time To: " + localDateTime_to); // 2020-05-15T13:30:59
System.out.println();

long hours = localDateTime_from.until(localDateTime_to, ChronoUnit.HOURS);
System.out.println("hours: " + hours); // 13

long minutes = localDateTime_from.until(localDateTime_to, ChronoUnit.MINUTES);
System.out.println("minutes: " + minutes); // 810
Sie können auch die Methode TemporalUnit.between(Temporal,Temporal) verwenden, um das gleiche Ergebnis zu erhalten:
TemporalUnit_between_ex1.java
LocalDateTime localDateTime_from = LocalDateTime.of(2020, 5, 15, 0, 0, 0);
System.out.println("Date Time From: " + localDateTime_from); // 2020-05-15T00:00

LocalDateTime localDateTime_to = LocalDateTime.of(2020, 5, 15, 13, 30, 59);  
System.out.println("Date Time To: " + localDateTime_to); // 2020-05-15T13:30:59
System.out.println();

long hours = ChronoUnit.HOURS.between(localDateTime_from, localDateTime_to);
System.out.println("hours: " + hours); // 13

long minutes = ChronoUnit.MINUTES.between(localDateTime_from, localDateTime_to);
System.out.println("minutes: " + minutes); // 810

24. isSupported(TemporalField)

No ADS
Überprüfen Sie, ob ein bestimmtes TemporalField von diesem Objekt LocalDateTime unterstützt wird.
// Inherited from TemporalAccessor interface
public boolean isSupported(TemporalField field)
Grundsätzlich unterstützt LocalDateTime die folgenden standardmäßigen TemporalField:
  • ChronoField.NANO_OF_SECOND
  • ChronoField.NANO_OF_DAY
  • ChronoField.MICRO_OF_SECOND
  • ChronoField.ChronoField.MICRO_OF_DAY
  • ChronoField.MILLI_OF_SECOND
  • ChronoField.MILLI_OF_DAY
  • ChronoField.SECOND_OF_MINUTE
  • ChronoField.SECOND_OF_DAY
  • ChronoField.MINUTE_OF_HOUR
  • ChronoField.MINUTE_OF_DAY
  • ChronoField.HOUR_OF_AMPM
  • ChronoField.CLOCK_HOUR_OF_AMPM
  • ChronoField.HOUR_OF_DAY
  • ChronoField.CLOCK_HOUR_OF_DAY
  • ChronoField.AMPM_OF_DAY
  • ChronoField.DAY_OF_WEEK
  • ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH
  • ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR
  • ChronoField.DAY_OF_MONTH
  • ChronoField.DAY_OF_YEAR
  • ChronoField.EPOCH_DAY
  • ChronoField.ALIGNED_WEEK_OF_MONTH
  • ChronoField.ALIGNED_WEEK_OF_YEAR
  • ChronoField.MONTH_OF_YEAR
  • ChronoField.PROLEPTIC_MONTH
  • ChronoField.YEAR_OF_ERA
  • ChronoField.YEAR
  • ChronoField.ERA
  • TemporalField
  • ChronoField

25. isSupported(TemporalUnit)

Überprüfen Sie, ob eine TemporalUnit von diesem Objekt LocalDateTime unterstützt wird.
// Inherited from Temporal interface
public boolean isSupported(TemporalUnit unit)
Grundsätzlich unterstützt LocalDateTime die folgenden Standard-TemporalUnit:
  • ChronoUnit.NANOS
  • ChronoUnit.MICROS
  • ChronoUnit.MILLIS
  • ChronoUnit.SECONDS
  • ChronoUnit.MINUTES
  • ChronoUnit.HOURS
  • ChronoUnit.HALF_DAYS
  • ChronoUnit.DAYS
  • ChronoUnit.WEEKS
  • ChronoUnit.MONTHS
  • ChronoUnit.YEARS
  • ChronoUnit.DECADES
  • ChronoUnit.CENTURIES
  • ChronoUnit.MILLENNIA
  • ChronoUnit.ERAS
No ADS