Javadoc (java 21) : https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/package-summary.html
Github : https://github.com/ThreeTen/threeten
Réponse référence sur Stackoverflow : https://stackoverflow.com/a/32443004
Article blog : https://introvertreader.medium.com/understanding-java-8s-datetime-api-your-guide-to-simplified-date-and-time-handling-3188673c6e12
LocalDate ld = LocalDate.now();
ld = ld.plusDays(1);
ld = ld.plus(1L, ChronoUnit.DAYS);LocalTime lt = LocalTime.now();LocalDateTime ldt = LocalDateTime.now();ZonedDateTime zdt ZonedDateTime.now();Interface ne possédant qu'une seule implémentation qui est ChronoUnit.
var one = LocalTime.of(5, 15);
var two = LocalTime.of(6, 30);
var date = LocalDate.of(2016, 1, 20);
System.out.println(ChronoUnit.HOURS.between(one, two)); // 1 heure
System.out.println(ChronoUnit.MINUTES.between(one, two)); // 75 mins
System.out.println(ChronoUnit.MINUTES.between(one, date)); // DateTimeExceptionLocalTime time = LocalTime.of(3,12,45); System.out.println(time); // 03:12:45
LocalTime truncated = time.truncatedTo(ChronoUnit.MINUTES); System.out.println(truncated); // 03:12
Exprimée en année, mois, semaines, jours, les périodes s'utilisent principalement avec les valeurs temporelles telles que LocalDate, LocalDateTime et ZonedDateTime.
var annually = Period.ofYears(1);
var quarterly = Period.ofMonths(3);
var everyThreeWeeks = Period.ofWeeks(3);
var everyOtherDay = Period.ofDays(2);
var everyYearAndAWeek = Period.of(1, 0, 7); // 1 année et 7 jourExprimée en jours, heures, minutes, secondes, les durations s'utilisent principalement avec les valeurs temporelles telles que LocalTime, LocalDateTime et ZonedDateTime.
var daily = Duration.ofDays(1); // PT24H
var hourly = Duration.ofHours(1); // PT1H
var everyMinute = Duration.ofMinutes(1); // PT1M
var everyTenSeconds = Duration.ofSeconds(10); // PT10S
var everyMilli = Duration.ofMillis(1); // PT0.00.1S
var everyNano = Duration.ofNanos(1); // PT0.000000001S
var daily2 = Duration.of(1, ChronoUnit.DAYS); // PT24H
// etc...Modélisée par la classe Instant.
Un moment est fabriqué par une des méthode factory de la classe Instant ou à travers une instance de ZonedDateTime.
var date = LocalDate.of(2022, 5, 25);
var time = LocalTime.of(11, 55, 00);
var zone = ZoneId.of("US/Eastern");
var zonedDateTime = ZonedDateTime.of(date, time, zone);
var instant = zonedDateTime.toInstant();
System.out.println(zonedDateTime); // 2022–05–25T11:55–04:00[US/Eastern]
System.out.println(instant); // 202–05–25T15:55:00ZNote
Un moment est plus universel qu'un LocalDateTime ou un ZonedDateTime.
Cf. https://stackoverflow.com/questions/32437550/whats-the-difference-between-instant-and-localdatetime
var now = Instant.now();
// do something time consuming
var later = Instant.now();
var duration = Duration.between(now, later);
System.out.println(duration.toMillis()); // Returns number milliseconds