Maison  >  Article  >  Java  >  Exemple détaillé de l'API date, une nouvelle fonctionnalité de Java 8

Exemple détaillé de l'API date, une nouvelle fonctionnalité de Java 8

黄舟
黄舟original
2017-07-22 15:50:011436parcourir

Java 8 inclut un nouvel ensemble d'API d'heure et de date sous le package java.time. Ce qui suit utilise des exemples pour vous expliquer les connaissances pertinentes de la nouvelle API de date de fonctionnalité de Java8. Les amis intéressés devraient y jeter un œil ensemble

Java 8 inclut un nouvel ensemble d'API d'heure et de date sous le package Java. .temps. L'exemple suivant montre certaines des parties les plus importantes de ce nouvel ensemble d'API :

1.Clock L'horloge

La classe Clock fournit accès aux méthodes de date et d'heure actuelles, l'horloge est sensible au fuseau horaire et peut être utilisée à la place de System.currentTimeMillis() pour obtenir le nombre actuel de microsecondes. Un moment spécifique peut également être représenté à l'aide de la classe Instant, qui peut également être utilisée pour créer d'anciens objets java.util.Date.


Clock clock = Clock.systemDefaultZone();
long millis = clock.millis();
Instant instant = clock.instant();
Date legacyDate = Date.from(instant);  // legacy java.util.Date

2. Fuseaux horaires Fuseaux horaires

Dans la nouvelle API, les fuseaux horaires sont représentés. par ZoneId. Le fuseau horaire peut être facilement obtenu en utilisant la méthode statique de. Le fuseau horaire définit le décalage horaire par rapport à l'heure UTS et est extrêmement important lors de la conversion entre des objets d'heure instantanée et des objets de date locaux.


System.out.println(ZoneId.getAvailableZoneIds());
// prints all available timezone ids
ZoneId zone1 = ZoneId.of("Europe/Berlin");
ZoneId zone2 = ZoneId.of("Brazil/East");
System.out.println(zone1.getRules());
System.out.println(zone2.getRules());
// ZoneRules[currentStandardOffset=+01:00]
// ZoneRules[currentStandardOffset=-03:00]

3.LocalTime heure locale

LocalTime définit une heure sans informations de fuseau horaire, comme 22 heures du soir ou 17 h 30 min 15 s. L'exemple suivant crée deux heures locales en utilisant le fuseau horaire créé par le code précédent. Les heures sont ensuite comparées et la différence de temps entre les deux heures est calculée en heures et minutes :


LocalTime now1 = LocalTime.now(zone1);
LocalTime now2 = LocalTime.now(zone2);
System.out.println(now1.isBefore(now2)); // false
long hoursBetween = ChronoUnit.HOURS.between(now1, now2);
long minutesBetween = ChronoUnit.MINUTES.between(now1, now2);
System.out.println(hoursBetween);    // -3
System.out.println(minutesBetween);   // -239

LocalTime fournit une variété de méthodes d'usine pour simplifier la création de objets, y compris l'analyse de la chaîne Time.


LocalTime localTime= LocalTime.of(23, 59, 59);
System.out.println(localTime);    // 23:59:59
DateTimeFormatter germanFormatter =
  DateTimeFormatter
    .ofLocalizedTime(FormatStyle.SHORT)
    .withLocale(Locale.GERMAN);
LocalTime leetTime = localTime.format(germanFormatter);
System.out.println(leetTime);

4.LocalDate date locale

LocalDate représente une date exacte, telle que 2014 -03-11. La valeur de l'objet est immuable et son utilisation est fondamentalement la même que celle de LocalTime. L'exemple suivant montre comment ajouter et soustraire des jours/mois/années à un objet Date. Notez également que ces objets sont immuables et que les opérations renvoient toujours une nouvelle instance.


LocalDate today = LocalDate.now();
LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS);
LocalDate yesterday = tomorrow.minusDays(2);
LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4);
DayOfWeek dayOfWeek = independenceDay.getDayOfWeek();
System.out.println(dayOfWeek);  // FRIDAY

Analyser un type LocalDate à partir d'une chaîne est aussi simple que d'analyser un LocalTime :


DateTimeFormatter germanFormatter =
  DateTimeFormatter
    .ofLocalizedDate(FormatStyle.MEDIUM)
    .withLocale(Locale.GERMAN);
LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter);
System.out.println(xmas);  // 2014-12-24

5.LocalDateTime date et heure locales

LocalDateTime représente à la fois l'heure et la date, ce qui équivaut à fusionner le contenu des deux premières sections en un seul objet. LocalDateTime, comme LocalTime et LocalDate, est immuable. LocalDateTime fournit quelques méthodes pour accéder à des champs spécifiques.


LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59);
DayOfWeek dayOfWeek = sylvester.getDayOfWeek();
System.out.println(dayOfWeek);   // WEDNESDAY
Month month = sylvester.getMonth();
System.out.println(month);     // DECEMBER
long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY);
System.out.println(minuteOfDay);  // 1439

Tant que les informations de fuseau horaire sont ajoutées, elles peuvent être converties en un objet instantané à un instant donné. être facilement converti en Java à l'ancienne.


Instant instant = sylvester
    .atZone(ZoneId.systemDefault())
    .toInstant();
Date legacyDate = Date.from(instant);
System.out.println(legacyDate);   // Wed Dec 31 23:59:59 CET 2014

Le formatage de LocalDateTime est le même que le formatage de l'heure et de la date. En plus d'utiliser le format prédéfini, nous pouvons également définir le format nous-mêmes :


DateTimeFormatter formatter =
  DateTimeFormatter
    .ofPattern("MMM dd, yyyy - HH:mm");
LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter);
String string = formatter.format(parsed);
System.out.println(string);   // Nov 03, 2014 - 07:13
Contrairement à java.text.NumberFormat, la nouvelle version de DateTimeFormatter est immuable, elle est donc thread-safe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn