devstory

Le Tutoriel de Java LocalTime

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

1. LocalTime

La classe LocalTime représente l'heure locale. Elle n'inclut pas les informations de date et de fuseau horaire. LocalTime comprend les heures, les minutes, les secondes, voire les nanosecondes (1 seconde = 1 milliard de nanosecondes).
  • Java 8 Date Time API Overview
La classe LocalTime se situe dans le package java.time. A l'instar des autres classes introduites dans Java 8 Date Time API, LocalTime est immuable, c'est-à-dire tous les calculs dans LocalTime permettent de créer un nouvel objet LocalTime, son utilisation est donc absolument sûre dans des environnements multithreading.
public final class LocalTime
        implements Temporal, TemporalAdjuster, Comparable<LocalTime>, Serializable

2. Static Factory Methods

La classe LocalTime ne fournit aucun constructeur, mais elle fournit des méthodes de fabrique statiques (static factory method) pour créer de nouveaux objets :
public static LocalTime now()

public static LocalTime now(ZoneId zone)

public static LocalTime now(Clock clock)  

public static LocalTime of(int hour, int minute)

public static LocalTime of(int hour, int minute, int second)

public static LocalTime of(int hour, int minute, int second, int nanoOfSecond)

public static LocalTime ofInstant(Instant instant, ZoneId zone)

public static LocalTime ofSecondOfDay(long secondOfDay)  

public static LocalTime ofNanoOfDay(long nanoOfDay)

public static LocalTime from(TemporalAccessor temporal)

public static LocalTime parse(CharSequence text)  

public static LocalTime parse(CharSequence text, DateTimeFormatter formatter)
Créer un objet LocalTime représentant l'heure actuelle obtenue à partir de l'horloge système et du fuseau horaire par défaut (sur votre ordinateur).
// Current time from the system clock in the default time-zone.
LocalTime localTime = LocalTime.now();
System.out.println("localTime: " + localTime);
Créer un objet LocalTime représentant l'heure actuelle à partir d'une horloge spécifiée :
// Clock from system default zone
Clock clockDefault = Clock.systemDefaultZone();

Clock clock = Clock.system(ZoneId.of("Europe/Paris"));

// Current time from the specified clock.
LocalTime localTime = LocalTime.now(clock);
System.out.println("localTime: " + localTime); // 19:51:11.990871 (Example)
  • Le Tutoriel de Java Clock
Créer un objet LocalTime représentant l'heure actuelle à partir d'une ZoneId spécifiée :
// System default zone
ZoneId zoneIdDefault = ZoneId.systemDefault();

ZoneId zoneId = ZoneId.of("Australia/Sydney");
LocalTime localTime = LocalTime.now(zoneId);

System.out.println("Now is: " + localTime); // 03:56:06.006877 (Example)
Créer un objet LocalTime à partir des valeurs hour, minute, second, nanoOfSecond spécifiées :
// of(int hour, int minute, int second, int nanoOfSecond)
LocalTime localTime1 = LocalTime.of(13, 10, 20, 12345);  
System.out.println("localTime1: " + localTime1); // 13:10:20.000012345

// of(int hour, int minute, int second)
LocalTime localTime2 = LocalTime.of(13, 10, 20);
System.out.println("localTime2: " + localTime2); // 13:10:20

// of(int hour, int minute)
LocalTime localTime3 = LocalTime.of(13, 10);
System.out.println("localTime3: " + localTime3); // 13:10
Créer un objet LocalTime avec les objets Instant et ZoneId spécifiés :
LocalTime_ofInstant_ex1.java
// ofInstant(Instant instant, ZoneId zone)
Instant instant = Instant.now();
ZoneId zoneId = ZoneId.systemDefault();

LocalTime localTime = LocalTime.ofInstant(instant, zoneId);
System.out.println("localTime: " + localTime);
  • Le Tutoriel de Java Instant
Créer un objet LocalTime à partir de l'analyse d'un texte au format de date :
// parse(CharSequence text)  
LocalTime localTime1 = LocalTime.parse("10:15:30"); // 10:15:30
System.out.println("localTime1: " + localTime1);

// parse(CharSequence text, DateTimeFormatter formatter)
DateTimeFormatter fmt2 = DateTimeFormatter.ofPattern("HH:mm");

LocalTime localTime2 = LocalTime.parse("13:15", fmt2); // 13:15
System.out.println("localTime2: " + localTime2);
  • Le Tutoriel de Java DateTimeFormatter
  • Java Date Time Format Pattern
Créer un objet LocalTime à partir d'un objet TemporalAccessor spécifié.
// from(TemporalAccessor temporal)
TemporalAccessor nowDatetime = LocalDateTime.now();
System.out.println("LocalDateTime.now(): " + nowDatetime);

LocalTime nowTime = LocalTime.from(nowDatetime);
System.out.println("nowTime: " + nowTime);

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

La méthode isBefore(LocalTime) est utilisée pour vérifier si cet objet LocalTime se produit avant (before) un autre objet LocalTime donné.
La méthode isAfter(LocalTime) est utilisée pour vérifier si cet objet LocalDate se produit après (after) un autre objet LocalTime donné.
public boolean isAfter(LocalTime other)  

public boolean isBefore(LocalTime other)
localTime1 is before localTime2.
Par exemple :
LocalTime_isBefore_isAfter_ex1.java
package org.o7planning.localtime.ex;

import java.time.LocalTime;

public class LocalTime_isBefore_isAfter_ex1 {

    public static void main(String[] args) {
        LocalTime localTime1 = LocalTime.parse("10:20"); // 10:20
        LocalTime localTime2 = LocalTime.parse("21:15:30.12345"); // 21:15:30.123450
        
        
        System.out.println("localTime1: " + localTime1); // 10:20
        System.out.println("localTime2: " + localTime2); // 21:15:30.123450
        System.out.println();
        
        System.out.println("localTime1.isBefore(localTime2): " + localTime1.isBefore(localTime2)); // true
        System.out.println("localTime1.isAfter(localTime2): " + localTime1.isAfter(localTime2)); // false  
    }
}
Output:
localTime1: 10:20
localTime2: 21:15:30.123450

localTime1.isBefore(localTime2): true
localTime1.isAfter(localTime2): false

4. format(DateTimeFormatter)

Formater cet objet LocalTime avec un DateTimeFormatter spécifié.
public String format(DateTimeFormatter formatter)
Par exemple :
LocalTime_format_ex1.java
LocalTime localTime = LocalTime.parse("10:15:30.12345");  
System.out.println("localTime: " + localTime); // 10:15:30.123450
System.out.println();

// '10:15', '10:15:30' or '10:15:30+01:00'.
DateTimeFormatter fmt1 = DateTimeFormatter.ISO_TIME;  
System.out.println("ISO_TIME: " + localTime.format(fmt1)); // 10:15:30.12345

DateTimeFormatter fmt2 = DateTimeFormatter.ofPattern("HH:mm");  
System.out.println("HH:mm: " + localTime.format(fmt2)); // 10:15
  • Le Tutoriel de Java DateTimeFormatter
  • Java Date Time Format Pattern

5. getX() *

La méthode getNano() renvoie la partie nanoseconde de ce LocalDate. Cela équivaut à convoquer la méthode get(ChronoField.NANO_OF_SECOND). La valeur renvoyée est comprise entre 0 et 10^9-1.
public int getHour()  
public int getMinute()  
public int getSecond()  
public int getNano()
Les méthodes getHour(), getMinute(), getSecond() sont également interprétées de la même manière que leurs noms l'impliquent.
Method
Same As
Range
getNano()
get(ChronoField.NANO_OF_SECOND)
0-10^9-1
getSecond()
get(ChronoField.SECOND_OF_MINUTE)
0-59
getMinute()
get(ChronoField.MINUTE_OF_HOUR)
0-59
getHour()
get(ChronoField.HOUR_OF_DAY)
0-23
Par exemple :
LocalTime_getX_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime localTime = LocalTime.parse("13:45:30.12345"); // 13:45:30.123450000
System.out.println("localTime: " + localTime); // 13:45:30
System.out.println();

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

localTime.getHour(): 13
localTime.getMinute(): 45
localTime.getSecond(): 30
localTime.getNano(): 123450000

6. get(TemporalField)

Renvoyer la valeur du champ spécifié de cet objet LocalTime sous la forme d'un nombre entier de 32 bits.
// Inherited from TemporalAccessor interface
public int get(TemporalField field)
Remarque : Certains champs peuvent ne pas être pris en charge par LocalTime et une UnsupportedTemporalTypeException sera levée. Pour se rassurer, il faut utiliser la méthode isSupported(TemporalField) pour vérifier si un certain champ est pris en charge par LocalTime.
Par exemple :
LocalTime_get_field_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime time = LocalTime.parse("13:45:30.12345"); // 13:45:30.123450000
System.out.println("localTime: " + time); // 13:45:30.123450
System.out.println();

// int get(TemporalField field)
System.out.println("AMPM_OF_DAY: " + time.get(ChronoField.AMPM_OF_DAY)); // 13
System.out.println("CLOCK_HOUR_OF_AMPM: " + time.get(ChronoField.CLOCK_HOUR_OF_AMPM)); // 1
System.out.println("CLOCK_HOUR_OF_DAY: " + time.get(ChronoField.CLOCK_HOUR_OF_DAY)); // 13
System.out.println("HOUR_OF_AMPM: " + time.get(ChronoField.HOUR_OF_AMPM)); // 1
System.out.println("HOUR_OF_DAY: " + time.get(ChronoField.HOUR_OF_DAY)); // 13

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

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

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

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

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

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

7. getLong(TemporalField)

Renvoyer la valeur du champ spécifié de cet objet LocalTime sous la forme d'un nombre entier de 64 bits.
// Inherited from TemporalAccessor interface
public long getLong(TemporalField field)
Remarque : Certains champs peuvent ne pas être pris en charge par LocalTime et une UnsupportedTemporalTypeException sera levée. Pour se rassurer, il faut utiliser la méthode isSupported(TemporalField) pour vérifier si un certain champ est pris en charge par LocalTime.
Par exemple :
LocalTime_getLong_field_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime time = LocalTime.parse("13:45:30.12345"); // 13:45:30.123450000
System.out.println("localTime: " + time); // 13:45:30.123450
System.out.println();

// long getLong(TemporalField field)
System.out.println("AMPM_OF_DAY: " + time.getLong(ChronoField.AMPM_OF_DAY)); // 13
System.out.println("CLOCK_HOUR_OF_AMPM: " + time.getLong(ChronoField.CLOCK_HOUR_OF_AMPM)); // 1
System.out.println("CLOCK_HOUR_OF_DAY: " + time.getLong(ChronoField.CLOCK_HOUR_OF_DAY)); // 13
System.out.println("HOUR_OF_AMPM: " + time.getLong(ChronoField.HOUR_OF_AMPM)); // 1
System.out.println("HOUR_OF_DAY: " + time.getLong(ChronoField.HOUR_OF_DAY)); // 13

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

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

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

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

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

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

8. plusX(..) *

La méthode plusHours(hoursToAdd) renvoie une copie de cet objet LocalTime avec le nombre d'heures ajouté.
Les méthodes plusMinutes(minutesToAdd), plusSeconds(secondsToAdd), plusNanos(nanosToAdd) sont également interprétées de la même manière que leurs noms l'indiquent.
public LocalTime plusHours(long hoursToAdd)   
public LocalTime plusMinutes(long minutesToAdd)   
public LocalTime plusSeconds(long secondstoAdd)   
public LocalTime plusNanos(long nanosToAdd)
Par exemple :
LocalTime_plusX_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime localTime = LocalTime.parse("13:45:30"); // 13:45:30
System.out.println("localTime: " + localTime); // 13:45:30
System.out.println();

// plusHours(long hoursToAdd)
LocalTime localTime1 = localTime.plusHours(10);
System.out.println("localTime1: " + localTime1); // 23:45:30

// plusHours(long hoursToAdd)
LocalTime localTime2 = localTime.plusHours(20);
System.out.println("localTime2: " + localTime2); // 09:45:30

LocalTime localTime3 = localTime.plusHours(-10);
System.out.println("localTime3: " + localTime3); // 03:45:30

// plusMinutes(long minutesToAdd)
LocalTime localTime4 = localTime.plusMinutes(5);
System.out.println("localTime4: " + localTime4); // 13:50:30

// plusSeconds(long secondstoAdd)
LocalTime localTime5 = localTime.plusSeconds(29);
System.out.println("localTime5: " + localTime5); // 13:45:59

// plusNanos(long nanosToAdd)
LocalTime localTime6 = localTime.plusNanos(12345);
System.out.println("localTime6: " + localTime6); // 13:45:30.000012345

9. plus(TemporalAmount)

Renvoyer une copie de cet objet LocalTime avec la durée spécifiée ajoutée.
// Inherited from Temporal interface
public LocalTime plus(TemporalAmount amountToAdd)
Vous pouvez utiliser la méthode TemporalAmount.addTo(Temporal) pour obtenir le même résultat.
// Defined in TemporalAmount interface:
public Temporal addTo​(Temporal temporal)
Par exemple :
LocalTime_plus_amount_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime localTime = LocalTime.parse("13:45:30"); // 13:45:30
System.out.println("localTime: " + localTime); // 13:45:30
System.out.println();

// ofSeconds(long seconds, long nanoAdjustment)
TemporalAmount amount1 = Duration.ofSeconds(10, 12345);
//plus(TemporalAmount amountToAdd)
LocalTime localTime1 = localTime.plus(amount1);
System.out.println("localTime1: " + localTime1); // 13:45:40.000012345

// plus(TemporalAmount amountToAdd)
LocalTime from = LocalTime.of(10, 20, 35); // of(int hour, int minute, int second)
LocalTime to = LocalTime.of(10, 25, 45);

TemporalAmount amount2 = Duration.between(from, to); // 00:05:10
LocalTime localTime2 = localTime.plus(amount2);
System.out.println("localTime2: " + localTime2); // 13:50:40

10. plus(long, TemporalUnit)

Renvoyer une copie de cet objet LocalTime avec une valeur spécifiée ajoutée dans l'unité donnée.
// Inherited from Temporal interface
public LocalTime plus(long amountToAdd, TemporalUnit unit)
Voici les unités standard prises en charge :
Field
Same as
NANOS
plusNanos(amountToAdd)
MICROS
plusNanos(amountToAdd*1000)
MILLIS
plusNanos(amountToAdd*100_000)
SECONDS
plusSeconds(amountToAdd)
MINUTES
plusMinutes(amountToAdd)
HOURS
plusHours(amountToAdd)
HALF_DAYS
plusHours(amountToAdd*12)
Par exemple :
LocalTime_plus_unit_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime localTime = LocalTime.parse("13:45:30"); // 13:45:30
System.out.println("localTime: " + localTime); // 13:45:30
System.out.println();

// plus(long amountToAdd, TemporalUnit unit)
LocalTime localTime1 = localTime.plus(5, ChronoUnit.HOURS);
System.out.println("localTime1: " + localTime1); // 18:45:30

// plus(long amountToAdd, TemporalUnit unit)
LocalTime localTime2 = localTime.plus(10, ChronoUnit.SECONDS);
System.out.println("localTime2: " + localTime2); // 13:45:40

// plus(long amountToAdd, TemporalUnit unit)
LocalTime localTime3 = localTime.plus(12345, ChronoUnit.NANOS);
System.out.println("localTime3: " + localTime3); // 13:45:30.000012345

11. minusX(..) *

La méthode minusHours(hoursToSubtract) renvoie une copie de cet objet LocalTime avec le nombre d'heures spécifié soustrait.
Les méthodes minusMinutes(minutesToSubtract), minusSeconds(secondsToSubtract), minusNanos(nanosToSubtract) sont également interprétées de la même manière que leurs noms l'indiquent.
public LocalTime minusHours(long hoursToSubtract)

public LocalTime minusMinutes(long minutesToSubtract)  

public LocalTime minusSeconds(long secondsToSubtract)

public LocalTime minusNanos(long nanosToSubtract)
Par exemple :
LocalTime_minusX_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime localTime = LocalTime.parse("13:45:30"); // 13:45:30
System.out.println("localTime: " + localTime); // 13:45:30
System.out.println();

// minusHours(long hoursToSubtract)
LocalTime localTime1 = localTime.minusHours(10);
System.out.println("localTime1: " + localTime1); // 03:45:30

// minusHours(long hoursToSubtract)
LocalTime localTime2 = localTime.minusHours(20);
System.out.println("localTime2: " + localTime2); // 17:45:30

LocalTime localTime3 = localTime.minusHours(-10);
System.out.println("localTime3: " + localTime3); // 23:45:30

// minusMinutes(long minutesToSubtract)
LocalTime localTime4 = localTime.minusMinutes(5);
System.out.println("localTime4: " + localTime4); // 13:40:30

// minusSeconds(long secondstoSubtract)
LocalTime localTime5 = localTime.minusSeconds(29);
System.out.println("localTime5: " + localTime5); // 13:45:01

// minusNanos(long nanosToSubtract)
LocalTime localTime6 = localTime.minusNanos(12345);
System.out.println("localTime6: " + localTime6); // 13:45:29.999987655

12. minus(TemporalAmount)

Renvoyer une copie de cet objet LocalTime avec la durée spécifiée soustraite.
// Inherited from Temporal interface
public LocalTime minus(TemporalAmount amountToSubtract)
Vous pouvez utiliser la méthode TemporalAmount.subtractFrom(Temporal) pour obtenir le même résultat.
// Defined in TemporalAmount interface:
public Temporal subtractFrom(Temporal temporal)
Par exemple :
LocalTime_minus_amount_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime localTime = LocalTime.parse("13:45:30"); // 13:45:30
System.out.println("localTime: " + localTime); // 13:45:30
System.out.println();

// ofSeconds(long seconds, long nanoAdjustment)
TemporalAmount amount1 = Duration.ofSeconds(10, 12345);
// minus(TemporalAmount amountToSubtract)
LocalTime localTime1 = localTime.minus(amount1);
System.out.println("localTime1: " + localTime1); // 13:45:19.999987655

// minus(TemporalAmount amountToSubtract)
LocalTime from = LocalTime.of(10, 20, 35); // of(int hour, int minute, int second)
LocalTime to = LocalTime.of(10, 25, 45);

TemporalAmount amount2 = Duration.between(from, to); // 00:05:10
LocalTime localTime2 = localTime.minus(amount2);
System.out.println("localTime2: " + localTime2); // 13:40:20

13. minus(long, TemporalUnit)

Renvoyer une copie de cet objet LocalTime avec une valeur spécifiée soustraite dans l'unité donnée.
// Inherited from Temporal interface
public LocalTime minus(long amountToSubtract, TemporalUnit unit)
Voici les unités standard prises en charge :
Field
Same as
NANOS
minusNanos(amountToSubtract)
MICROS
minusNanos(amountToSubtract*1000)
MILLIS
minusNanos(amountToSubtract*100_000)
SECONDS
minusSeconds(amountToSubtract)
MINUTES
minusMinutes(amountToSubtract)
HOURS
minusHours(amountToSubtract)
HALF_DAYS
minusHours(amountToSubtract*12)
Par exemple :
LocalTime_minus_unit_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime localTime = LocalTime.parse("13:45:30"); // 13:45:30
System.out.println("localTime: " + localTime); // 13:45:30
System.out.println();

// minus(long amountToSubtract, TemporalUnit unit)
LocalTime localTime1 = localTime.minus(5, ChronoUnit.HOURS);
System.out.println("localTime1: " + localTime1); // 08:45:30

// minus(long amountToSubtract, TemporalUnit unit)
LocalTime localTime2 = localTime.minus(10, ChronoUnit.SECONDS);
System.out.println("localTime2: " + localTime2); // 13:45:20

// minus(long amountToSubtract, TemporalUnit unit)
LocalTime localTime3 = localTime.minus(12345, ChronoUnit.NANOS);
System.out.println("localTime3: " + localTime3); // 13:45:29.999987655

14. withX(..) *

La méthode withHour(hour) renvoie une copie de ce LocalTime avec l'heure modifiée vers l'heure spécifiée.
Les méthodes withMinute(minute), withSecond(second), withNano(nanoOfSecond) sont également interprétées de la même manière que leurs noms l'indiquent.
public LocalTime withHour(int hour)
public LocalTime withMinute(int minute)
public LocalTime withSecond(int second)
public LocalTime withNano(int nanoOfSecond)
Par exemple :
LocalTime_withX_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime localTime = LocalTime.parse("13:45:30"); // 13:45:30
System.out.println("localTime: " + localTime); // 13:45:30
System.out.println();

// withHour(int hour)  [0 - 23]
LocalTime localTime1 = localTime.withHour(23);
System.out.println("localTime1: " + localTime1); // 23:45:30

// withMinute(int minute)   [0 - 59]
LocalTime localTime2 = localTime.withMinute(59);
System.out.println("localTime2: " + localTime2); // 13:59:30

// withSecond(int second)   [0 - 59]
LocalTime localTime3 = localTime.withSecond(59);
System.out.println("localTime3: " + localTime3); // 13:45:59

// withNano(int nanoOfSecond)    [0 - 10^9-1]
LocalTime localTime4 = localTime.withNano(12345);
System.out.println("localTime4: " + localTime4); // 13:45:30.000012345

15. with(TemporalAdjuster)

Renvoyer une copie de cet objet LocalDate, avec les données temporelles ajustées par l'objet TemporalAdjuster.
// Inherited from Temporal interface
public LocalTime with(TemporalAdjuster adjuster)
Par exemple :
LocalTime_with_adjuster_ex1.java
LocalTime now = LocalTime.now();
System.out.println("Now is: " + now);
System.out.println();

// with(TemporalAdjuster adjuster)
LocalTime noon = now.with(LocalTime.NOON);
System.out.println("NOON: " + noon); // 12:00

// with(TemporalAdjuster adjuster)
LocalTime midnight = now.with(LocalTime.MIDNIGHT);
System.out.println("MIDNIGHT: " + midnight);  // 00:00
Exemple : Ecrire un TemporalAdjuster personnalisé :
LocalTime_with_adjuster_ex2.java
package org.o7planning.localtime.ex;

import java.time.LocalTime;
import java.time.temporal.ChronoField;
import java.time.temporal.Temporal;
import java.time.temporal.TemporalAdjuster;

public class LocalTime_with_adjuster_ex2 {

    public static void main(String[] args) {
        LocalTime now = LocalTime.now();
        System.out.println("Now is: " + now);
        System.out.println();

        LocalTime lastMinOfHour = now.with(new LastMinOfHourAdjuster());
        System.out.println("lastMinOfHour: " + lastMinOfHour);
    }
}

class LastMinOfHourAdjuster implements TemporalAdjuster {
    @Override
    public Temporal adjustInto(Temporal temporal) {
        LocalTime t = LocalTime.from(temporal);

        return t.with(ChronoField.MINUTE_OF_HOUR, 59);
    }
};
Output:
Now is: 19:37:57.524205

lastMinOfHour: 19:59:57.524205

16. with(TemporalField, long)

Renvoyer une copie de cet objet LocalTime avec le champ spécifié modifié par la nouvelle valeur.
// Inherited from Temporal interface
public LocalTime with(TemporalField field, long newValue)
Par exemple :
LocalTime_with_field_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime myTime = LocalTime.parse("13:45:30.12345"); // 13:45:30.123450000

System.out.println("myTime is: " + myTime);
System.out.println("myTime CLOCK_HOUR_OF_AMPM: " + myTime.get(ChronoField.CLOCK_HOUR_OF_AMPM)); // 1
System.out.println("myTime CLOCK_HOUR_OF_DAY: " + myTime.get(ChronoField.CLOCK_HOUR_OF_DAY)); // 13
System.out.println("myTime SECOND_OF_MINUTE: " + myTime.get(ChronoField.SECOND_OF_MINUTE)); // 30
System.out.println();

LocalTime localTime1 = myTime.with(ChronoField.CLOCK_HOUR_OF_AMPM, 10); // 22:45:30.123450
System.out.println("localTime1: " + localTime1);

LocalTime localTime2 = myTime.with(ChronoField.CLOCK_HOUR_OF_DAY, 10); // 10:45:30.123450
System.out.println("localTime2: " + localTime2);

LocalTime localTime3 = myTime.with(ChronoField.SECOND_OF_MINUTE, 59); // 13:45:59.123450
System.out.println("localTime3: " + localTime3);
  • ChronoField
  • TemporalField

17. adjustInto(Temporal)

La méthode adjustInto(Temporal) renvoie une copie de l'objet Temporal donné avec des données temporelles ajustées pour ressembler à cet objet LocalTime.
// Inherited from TemporalAdjuster interface
public Temporal adjustInto(Temporal temporal)
Par exemple :
LocalTime localTime = LocalTime.parse("19:30:55");

// Current date time in System default time-zone.
ZonedDateTime zonedDateTime = ZonedDateTime.now();  

System.out.println("Before adjustInto(): " + zonedDateTime);

// returns Temporal
ZonedDateTime adjustedDateTime = (ZonedDateTime) localTime.adjustInto(zonedDateTime);

// print results
System.out.println("After adjustInto(): " + adjustedDateTime);
Output:
Before adjustInto(): 2021-06-18T17:18:06.355673+06:00[Asia/Bishkek]
After adjustInto(): 2021-06-18T19:30:55+06:00[Asia/Bishkek]

18. atDate(LocalDate)

La méthode atDate(LocalDate) est utilisée pour combiner cet objet LocalTime avec l'objet LocalDate spécifié pour créer un objet LocalDateTime.
public LocalDateTime atDate(LocalDate date)
Par exemple :
LocalTime_atDate_ex1.java
LocalTime localTime = LocalTime.parse("19:30:55");
LocalDate localDate = LocalDate.parse("2000-05-20");

LocalDateTime localDateTime = localTime.atDate(localDate);
System.out.println(localDateTime); // 2000-05-20T19:30:55

19. atOffset(ZoneOffset)

La méthode atOffset(ZoneOffset) est utilisée pour combiner cet objet LocalTime avec l'objet ZoneOffset spécifié pour créer un objet OffsetTime.
public OffsetTime atOffset(ZoneOffset offset)
Par exemple :
LocalTime_atOffset_ex1.java
LocalTime localTime = LocalTime.parse("16:30:59");
System.out.println("localTime: " + localTime); // 16:30:59

// Create a ZoneOffset object
ZoneOffset offset = ZoneOffset.ofHours(2);

// atOffset(ZoneOffset)
OffsetTime offsetTime = localTime.atOffset(offset);
System.out.println("offsetTime: " + offsetTime); // 16:30:59+02:00
  • Le Tutoriel de Java OffsetTime

20. toX(..) *

public int toSecondOfDay()

public long toNanoOfDay()  

public long toEpochSecond(LocalDate date, ZoneOffset offset)

21. until(Temporal, TemporalUnit)

Calculer la durée jusqu'à un autre repère date-heure en termes d'unité spécifiée.
// Inherited from Temporal interface
public long until(Temporal endExclusive, TemporalUnit unit)
Par exemple :
LocalTime_until_ex1.java
LocalTime localTime_from = LocalTime.of(1, 0, 0);
System.out.println("Time From: " + localTime_from); // 01:00

LocalTime localTime_to = LocalTime.of(13, 30, 59);  
System.out.println("Time To: " + localTime_to); // 13:30:59
System.out.println();

long hours = localTime_from.until(localTime_to, ChronoUnit.HOURS);
System.out.println("hours: " + hours); // 12

long minutes = localTime_from.until(localTime_to, ChronoUnit.MINUTES);
System.out.println("minutes: " + minutes); // 750
Vous pouvez également utiliser la méthode TemporalUnit.between(Temporal,Temporal) pour obtenir le même résultat :
TemporalUnit_between_ex1.java
LocalTime localTime_from = LocalTime.of(1, 0, 0);
System.out.println("Time From: " + localTime_from); // 01:00

LocalTime localTime_to = LocalTime.of(13, 30, 59);
System.out.println("Time To: " + localTime_to); // 13:30:59
System.out.println();

long hours = ChronoUnit.HOURS.between(localTime_from, localTime_to);
System.out.println("hours: " + hours); // 12

long minutes = ChronoUnit.MINUTES.between(localTime_from, localTime_to);
System.out.println("minutes: " + minutes); // 750

22. truncatedTo(TemporalUnit)

Renvoyer une copie de cet objet LocalTime avec l'heure tronquée (truncated) dans l'unité spécifiée.
public LocalTime truncatedTo(TemporalUnit unit)
Par exemple :
LocalTime_truncatedTo_ex1.java
LocalTime localTime = LocalTime.parse("21:30:59.12345");
System.out.println("localTime: " + localTime); // 21:30:59.123450

// truncatedTo(TemporalUnit unit)
LocalTime truncatedLocalTime = localTime.truncatedTo(ChronoUnit.MINUTES);
 
System.out.println("truncatedLocalTime: " + truncatedLocalTime); // 21:30

23. range(TemporalField)

Renvoyer une plage de valeurs valides pour le champ spécifié.
// Inherited from TemporalAccessor interface
public ValueRange range(TemporalField field)
Par exemple :
LocalTime_range_ex1.java
LocalTime localTime = LocalTime.parse("09:30:45.12345");

// range(TemporalField field)
ValueRange range1 = localTime.range(ChronoField.MILLI_OF_SECOND);
System.out.println("Range in MILLI_OF_SECOND: " + range1);

ValueRange range2 = localTime.range(ChronoField.CLOCK_HOUR_OF_DAY);
System.out.println("Range in CLOCK_HOUR_OF_DAY: " + range2);

ValueRange range3 = localTime.range(ChronoField.CLOCK_HOUR_OF_AMPM);
System.out.println("Range in CLOCK_HOUR_OF_AMPM: " + range3);
Output:
Range in MILLI_OF_SECOND: 0 - 999
Range in CLOCK_HOUR_OF_DAY: 1 - 24
Range in CLOCK_HOUR_OF_DAY: 1 - 12
  • ValueRange
  • TemporalUnit
  • ChronoField

24. query(TemporalQuery<R>)

Interroger cet objet LocalTime avec l'objet TemporalQuery spécifié pour extraire des informations.
// Inherited from TemporalAccessor interface
public <R> R query(TemporalQuery<R> query)
Par exemple :
LocalTime_query_ex1.java
package org.o7planning.localtime.ex;

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.chrono.Chronology;
import java.time.temporal.TemporalQueries;
import java.time.temporal.TemporalUnit;

public class LocalTime_query_ex1 {

    public static void main(String[] args) {
        LocalTime localTime = LocalTime.of(11, 30, 59, 12345);  
        System.out.printf("localTime: %s%n", localTime); // 11:30:59.000012345

        TemporalUnit unit = localTime.query(TemporalQueries.precision());
        System.out.printf("precision: %s%n", unit);

        LocalTime localTime2 = localTime.query(TemporalQueries.localTime());
        System.out.printf("localTime2: %s%n", localTime2);

        LocalDate localDate = localTime.query(TemporalQueries.localDate());
        System.out.printf("localDate: %s%n", localDate);

        ZoneOffset zoneOffset = localTime.query(TemporalQueries.offset());
        System.out.printf("ZoneOffset: %s%n", zoneOffset);

        ZoneId zone = localTime.query(TemporalQueries.zone());
        System.out.printf("zone: %s%n", zone);

        ZoneId zoneId = localTime.query(TemporalQueries.zoneId());
        System.out.printf("zoneId: %s%n", zoneId);

        Chronology chronology = localTime.query(TemporalQueries.chronology());
        System.out.printf("chronology: %s%n", chronology);
    }
}
Output:
localTime: 11:30:59.000012345
precision: Nanos
localTime2: 11:30:59.000012345
localDate: null
ZoneOffset: null
zone: null
zoneId: null
chronology: null

25. isSupported(TemporalField)

// Inherited from TemporalAccessor interface
public boolean isSupported(TemporalField field)
A la base, LocalTime prend en charge les champs standard suivants :
  • ChronoField.NANO_OF_SECOND
  • ChronoField.NANO_OF_DAY
  • ChronoField.MICRO_OF_SECOND
  • 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
Par exemple :
LocalTime_isSupported_ex1.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime localTime = LocalTime.parse("13:45:30.12345"); // 13:45:30.123450000

// boolean isSupported(TemporalField field)
// LocalTime does not support ChronoField.DAY_OF_MONTH, DAY_OF_YEAR,.. (** Used for LocalDateTime, LocalDate)
System.out.println("DAY_OF_MONTH is supported? " + localTime.isSupported(ChronoField.DAY_OF_MONTH)); // false
System.out.println("DAY_OF_YEAR is supported? " + localTime.isSupported(ChronoField.DAY_OF_YEAR)); // false

// LocalTime support ChronoField.MINUTE_OF_DAY, SECOND_OF_MINUTE,..
System.out.println("MINUTE_OF_DAY is supported? " + localTime.isSupported(ChronoField.MINUTE_OF_DAY)); // true
System.out.println("SECOND_OF_MINUTE is supported? " + localTime.isSupported(ChronoField.SECOND_OF_MINUTE)); // true
  • TemporalField
  • ChronoField

26. isSupported(TemporalUnit)

Vérifier si une TemporalUnit donnée est prise en charge.
// Inherited from Temporal interface
public boolean isSupported(TemporalUnit unit)
A la base, LocalTime prend en charge les unités standard suivantes :
  • ChronoUnit.NANOS
  • ChronoUnit.MICROS
  • ChronoUnit.MILLIS
  • ChronoUnit.SECONDS
  • ChronoUnit.MINUTES
  • ChronoUnit.HOURS
  • ChronoUnit.HALF_DAYS
Par exemple :
LocalTime_isSupported_ex2.java
// Format: 13:45:30.12345 or 13:45:30 or 13:45
LocalTime localTime = LocalTime.parse("13:45:30.12345"); // 13:45:30.123450000

// boolean isSupported(TemporalUnit unit)
// LocalTime does not support ChronoUnit.CENTURIES, WEEKS,.. (** Used for LocalDateTime, LocalDate)
System.out.println("CENTURIES is supported? " + localTime.isSupported(ChronoUnit.CENTURIES)); // false
System.out.println("WEEKS is supported? " + localTime.isSupported(ChronoUnit.WEEKS)); // false

// LocalTime support ChronoUnit.HOURS, MINUTES,..
System.out.println("HOURS is supported? " + localTime.isSupported(ChronoUnit.HOURS)); // true
System.out.println("MINUTES is supported? " + localTime.isSupported(ChronoUnit.MINUTES)); // true