En plus des expressions Lambda, des flux et de plusieurs améliorations mineures, Java 8 a également introduit un nouvel ensemble d'API de temps et de date dans ce tutoriel, nous apprendrons à utiliser Java 8 à travers quelques exemples de tâches simples. Le traitement par Java des dates, des calendriers et du temps a toujours été critiqué, en particulier sa décision de définir Java.util.Date comme modifiable et implémentez SimpledateFormat comme non-thread-sage. Il semble que Java ait réalisé qu'il devait fournir un meilleur support pour la fonctionnalité de temps et de date, ce qui est également une bonne chose pour les communautés qui sont utilisées pour utiliser la bibliothèque JODA Time and Date. Le plus grand avantage de cette nouvelle bibliothèque d'heure et de date est qu'elle définit clairement certains concepts liés à l'heure et à la date, tels que l'heure instantanée (instant), la durée (durée), la date (date), l'heure (heure), le fuseau horaire (heure -zone) et période de temps (période). Il s'appuie également sur certains des avantages de la bibliothèque Joda, comme la distinction de la compréhension du temps et de la date entre les humains et les machines. Java 8 utilise toujours le système de calendrier d'ISO, et contrairement à ses prédécesseurs, les classes du package java.time sont immuables et en filetage. La nouvelle API HEURE et DATE est située dans le package Java.Time.
1.Instant-it représente un horodatage
2. LocalDate - Date qui n'inclut pas le temps spécifique, comme 2014-01-14. Il peut être utilisé pour stocker les anniversaires, l'anniversaire, les dates d'induction, etc.
3.Localtime - il représente un moment sans dates
4.LocaldateTime-it contient la date et l'heure, mais il n'y a toujours pas d'informations de décalage ni de fuseau horaire.
5.zoneddateTime - Il s'agit d'une date et d'une heure complètes contenant le fuseau horaire, et le décalage est basé sur l'heure UTC / Greenwich.
La nouvelle bibliothèque ajoute également ZoneOffset et Zoned, qui peut fournir une meilleure prise en charge des fuseaux horaires. Avec la nouvelle DateTimeFormatter, l'analyse et la mise en forme des dates sont également devenues nouvelles. En mentionnant simplement cet article, j'ai écrit cet article lorsque Java était sur le point de lancer cette nouvelle fonctionnalité à cette époque l'année dernière, vous constaterez donc que le moment des exemples est toujours de l'année dernière. Si vous exécutez ces exemples, les valeurs qu'ils renvoient sont définitivement correctes.
Comment Java 8 gère l'heure et la date
Quelqu'un m'a demandé quelle est la meilleure façon d'apprendre une nouvelle bibliothèque? Ma réponse est de l'utiliser dans des projets réels. Il y aura une variété de besoins dans un vrai projet, ce qui incitera les développeurs à explorer et à rechercher cette nouvelle bibliothèque. En bref, seule la tâche elle-même vous encouragera vraiment à explorer et à apprendre. Il en va de même pour la nouvelle API de date et d'heure de Java 8. Pour apprendre cette nouvelle bibliothèque de Java 8, j'ai ici créé 20 exemples axés sur les tâches. Commençons par une tâche simple, telle que comment utiliser la bibliothèque Java 8 Hime and Date pour représenter aujourd'hui, puis générer davantage une date complète avec le délai et le fuseau horaire, puis étudient comment effectuer des tâches plus pratiques, telles que développer Une demande de rappel pour savoir combien de jours il y a avant certaines dates telles que les anniversaires, le dimanche anniversaire, le jour de facturation suivant, la prochaine journée de prime ou la date d'expiration de la carte de crédit.
Exemple 1 Comment obtenir la date de la journée dans Java 8
Il y a une classe dans Java 8 appelée LocalDate, qui peut être utilisée pour représenter la date d'aujourd'hui. Cette classe est légèrement différente de java.util.date car elle ne contient que des dates et pas de temps. Donc, si vous avez seulement besoin de représenter la date sans inclure l'heure, vous pouvez l'utiliser.
La copie de code est la suivante:
LocalDate Today = localDate.now ();
Sortir
Date locale d'aujourd'hui: 2014-01-14
Vous pouvez voir que cela crée la date d'aujourd'hui sans informations de temps. Il formate également la date, puis le sort.
Exemple 2 Comment obtenir l'année en cours, mois, jour en Java 8
La classe LocalDate fournit quelques méthodes pratiques pour extraire les attributs de l'année, du mois, du jour et d'autres dattes. En utilisant ces méthodes, vous pouvez obtenir tous les attributs de date dont vous avez besoin, sans utiliser de classes comme java.util.calendar:
La copie de code est la suivante:
LocalDate aujourd'hui = localDate.now ();
int year = Today.getyEar ();
int mois = aujourd'hui.getMonthValue ();
int day = aujourd'hui.getDayofMonth ();
System.out.printf ("Année:% D Mois:% D Jour:% D / T% N", année, mois, jour);
Sortir
Date locale d'aujourd'hui: 2014-01-14
Année: 2014 mois: 1 jour: 14
Comme vous pouvez le voir, il est très simple d'obtenir des informations d'année sur un an dans Java 8. Utilisez simplement la méthode Getter correspondante, sans mémoire, et elle est très intuitive. Vous pouvez le comparer avec l'ancienne méthode d'écriture pour obtenir l'année, le mois et le jour en cours à Java.
Exemple 3 Comment obtenir une date spécifique dans Java 8
Dans le premier exemple, nous voyons qu'il est très simple de générer la date du jour à travers la méthode statique maintenant (), mais via une autre méthode d'usine très utile localDate.of (), vous pouvez créer n'importe quelle date, qui accepte le paramètre de l'année, du mois et du jour, puis renvoie une instance locale équivalente. Il y a une autre bonne nouvelle sur cette méthode qu'il n'a fait aucune erreur dans l'API précédente. Tout ce que vous écrivez sur la date ici est, par exemple, dans l'exemple ci-dessous, il représente le 14 janvier, et il n'y a pas de logique cachée.
La copie de code est la suivante:
LocalDate DateOfBirth = localDate.of (2010, 01, 14);
System.out.println ("Votre date de naissance est:" + DateOfbirth);
Sortie: Votre date de naissance est: 2010-01-14
On peut voir que la date de création est ce que nous avons écrit, le 14 janvier 2014.
Exemple 4 Comment vérifier si deux dates sont égales dans Java 8
Si vous parlez de la tâche réelle de traitement et de date en réalité, une chose courante est de vérifier si les deux dates sont égales. Vous pouvez souvent rencontrer des questions pour savoir si aujourd'hui est une journée spéciale, comme l'anniversaire, l'anniversaire ou les vacances. Parfois, vous recevrez une date pour vérifier si c'est un certain jour, par exemple, des vacances. L'exemple suivant vous aidera à terminer ce type de tâche dans Java 8. Comme vous pouvez le penser, LocalDate remplace la méthode égaux pour comparer les dates comme suit:
La copie de code est la suivante:
LocalDate Date1 = LocalDate.of (2014, 01, 14);
System.out.printf ("Aujourd'hui% S et Date1% S sont la même date% n", aujourd'hui, date1);
}
Sortir
Aujourd'hui 2014-01-14 et Date1 2014-01-14 sont la même date
Dans ce cas, les deux dates que nous comparons sont égales. En même temps, si vous obtenez une chaîne de date formatée dans le code, vous devez l'analyser en une date avant de pouvoir le comparer. Vous pouvez comparer cet exemple avec la façon dont Java compare les dates auparavant, et vous constaterez que c'est tellement excitant.
Exemple 5 Comment vérifier les événements en double dans Java 8, disons l'anniversaire
Il existe une autre tâche pratique liée au temps et à la date à Java, qui consiste à vérifier les événements en double, tels que les jours de facturation mensuels, l'anniversaire de mariage, les jours de remboursement mensuels ou le jour où vous payez des primes d'assurance chaque année. Si vous travaillez dans une entreprise de commerce électronique, il y aura certainement un module qui enverra des souhaits d'anniversaire aux utilisateurs et leur enverra des salutations de toutes les vacances importantes, comme Noël, Thanksgiving et en Inde, c'est peut-être le Deepawali Festival. Comment déterminer s'il s'agit d'un festival ou d'un événement en double à Java? Utilisez la classe du jour du mois. Cette classe est composée de mois et de jour, et ne contient pas d'informations sur l'année, ce qui signifie que vous pouvez l'utiliser pour représenter certains jours qui apparaissent à plusieurs reprises chaque année. Bien sûr, il existe d'autres combinaisons, comme la classe du mois d'année. Il est également immuable et fileté comme les autres classes dans la nouvelle bibliothèque de temps et de date, et c'est aussi une classe de valeur. Utilisons un exemple pour voir comment utiliser le jour du mois pour vérifier une date en double:
La copie de code est la suivante:
LocalDate DateOfBirth = localDate.of (2010, 01, 14);
Anniversaire du mois = jour du mois (dateofbirth.getmonth (), dateofbirth.getDayofMonth ());
Le jour du mois CurrentOnThday = Monthay.from (aujourd'hui);
if (currentmonthday.equals (anniversaire)) {
System.out.println ("Beaucoup de nombreux retours heureux de la journée !!");
}autre{
System.out.println ("Désolé, aujourd'hui n'est pas votre anniversaire");
}
Sortie: beaucoup de retours heureux de la journée !!
Bien que les années soient différentes, c'est aujourd'hui l'anniversaire, vous verrez donc un souhait d'anniversaire dans la sortie. Vous pouvez ajuster l'heure du système et exécuter le programme pour voir si cela vous rappelle lorsque votre prochain anniversaire est.
Exemple 6 Comment obtenir l'heure actuelle dans Java 8
Ceci est très similaire à l'obtention de la date en cours dans le premier exemple. Cette fois, nous utilisons une classe appelée Localtime, qui est une heure sans date et est un proche par rapport à LocalDate. Ici, vous pouvez également utiliser la méthode d'usine statique maintenant () pour obtenir l'heure actuelle. Le format par défaut est HH: mm: ss: nnn, où nnn est nanosecondes. Vous pouvez le comparer avec la façon d'obtenir l'heure actuelle dans Java 8 avant.
La copie de code est la suivante:
LocalTime Time = LocalTime.Now ();
Sortir
Heure locale maintenant: 16: 33: 33.369 // en heure, minutes, secondes, nano secondes
Comme vous pouvez le voir, l'heure actuelle n'inclut pas les dates, car localtime n'a que du temps et pas de dates.
Exemple 7 Comment augmenter le nombre d'heures de temps
Plusieurs fois, nous devons ajouter des heures, des minutes ou des secondes pour calculer le temps futur. Java 8 fournit non seulement des classes immuables et en filetage, mais il fournit également des méthodes plus pratiques telles que Plushours () pour remplacer la méthode Add () d'origine. Soit dit en passant, ces méthodes renvoient une référence à une nouvelle instance locale, car localtime est immuable, n'oubliez pas de stocker cette nouvelle référence.
La copie de code est la suivante:
LocalTime Heure = LocalTime.Now ();
Localtime newtime = time.plushours (2);
System.out.println ("Temps après 2 heures:" + newtime);
Sortir:
Temps après 2 heures: 18: 33: 33.369
Vous pouvez voir que l'heure actuelle est de 16: 33: 33.369 après 2 heures. Vous pouvez maintenant le comparer avec l'ancienne façon d'ajouter ou de diminuer les heures à Java. Vous pouvez dire quelle méthode est la meilleure à première vue.
Exemple 8 Comment obtenir une date après 1 semaine
Ceci est similaire à l'exemple précédent de l'obtention du temps après 2 heures, nous apprendrons ici comment obtenir la date après 1 semaine. LocalDate est utilisé pour représenter les dates sans temps. Étant donné que LocalDate est également immuable, toute opération de modification renvoie une nouvelle instance, alors n'oubliez pas de l'enregistrer.
La copie de code est la suivante:
LocalDate Nextweek = Today.Plus (1, Chronounit.weeks);
System.out.println ("Aujourd'hui est:" + Aujourd'hui);
System.out.println ("Date après 1 semaine:" + Nextweek);
Sortir:
Aujourd'hui est le: 2014-01-14
Date après 1 semaine: 2014-01-21
Vous pouvez voir quelle sera la date dans 7 jours, c'est-à-dire une semaine. Vous pouvez utiliser cette méthode pour ajouter un mois, un an, une heure, une minute ou même dix ans, et consulter la classe Chronounit dans l'API Java pour obtenir plus d'options.
Exemple 9 Date d'environ un an
Ceci est une suite de l'exemple précédent. Dans l'exemple ci-dessus, nous avons appris à utiliser la méthode LocalDate's Plus () pour ajouter une date, une semaine ou un mois à une date.
La copie de code est la suivante:
LocalDate précédemmentaryear = Today.minus (1, chronounit.years);
System.out.println ("Date avant 1 an:" + Précédent);
LocalDate Nextyear = Today.plus (1, années);
System.out.println ("Date après 1 an:" + NexTyear);
Sortir:
Date avant 1 an: 2013-01-14
Date après 1 an: 2015-01-14
On peut voir qu'il y a maintenant deux ans, l'un en 2013, l'autre en 2015 et les années vers 2014.
Exemple 10 Utilisation de l'horloge dans Java 8
Java 8 est livré avec une classe d'horloge, que vous pouvez utiliser pour obtenir l'heure, la date ou l'heure actuelles dans un certain fuseau horaire. L'horloge peut être utilisée à la place de System.CurrentTimeInMillis () et des méthodes Timezone.getDefault ().
La copie de code est la suivante:
// Renvoie l'heure actuelle en fonction de votre horloge système et réglée sur UTC.
Clock Clock = Clock.SystemUtc ();
System.out.println ("Clock:" + Clock);
// Renvoie le temps en fonction de l'horloge d'horloge système defaultclock =
Clock.SystemDefaultZone ();
System.out.println ("Clock:" + Clock);
Sortir:
Horloge: SystemClock [Z]
Horloge: SystemClock [Z]
Vous pouvez comparer cette horloge avec la date spécifiée, telle que:
La copie de code est la suivante:
classe publique myclass {
horloge privée; // Inject de dépendance ...
Processus de vide public (LocalDate EventDate) {
if (eventDate.isbeFore (localDate.Now (horloge)) {
...
}
}
}
Ceci est tout à fait pratique si vous avez besoin de traiter les dates dans différents fuseaux horaires.
Exemple 11 Comment déterminer si une date est avant ou après une autre date à Java
Il s'agit également d'une tâche courante dans les projets réels. Comment dites-vous si une date est avant ou après une autre date, ou exactement égale? Dans Java 8, la classe LocalDate a une méthode ISBEFore () et ISAfter () qui peut être utilisée pour comparer deux dates. Si la date d'appel, la méthode est antérieure à la date donnée, la méthode isBefore () renvoie true.
La copie de code est la suivante:
LocalDate Tomorrow = LocalDate.of (2014, 1, 15);
System.out.println ("Demain vient après aujourd'hui");
}
LocalDate hier = aujourd'hui.minus (1, jours);
if (hier.isbefore (aujourd'hui)) {
System.out.println ("Hier est la veille aujourd'hui");
}
Sortir:
Demain vient après aujourd'hui
Hier, c'est la veille aujourd'hui
On peut voir que la date dans Java 8 est assez simple. Il n'est pas nécessaire d'utiliser une autre classe comme Calendar pour effectuer des tâches similaires.
Exemple 12 Gestion des différents fuseaux horaires dans Java 8
Java 8 sépare non seulement les dates et les heures, mais a également un fuseau horaire. Il y a maintenant plusieurs ensembles de classes liées au fuseau horaire. Il équivaut à la classe Gregoriancalendar avant Java 8. En utilisant cette classe, vous pouvez convertir l'heure locale en temps correspondant dans un autre fuseau horaire, comme l'exemple suivant:
La copie de code est la suivante:
// Date et heure avec le fuseau horaire dans Java 8 ZoneId America = ZoneId.of ("America / New_york");
LocalDateTime localTdateAndtime = localDateTime.now ();
Zoneddatetime dataandtimeinnewyork = zoneddatetime.of (localtdateandtime, America);
System.out.println ("Date et heure actuelles dans un fuseau horaire particulier:" + DATAETTHETHILEInNewyork);
Sortir:
Date et heure actuelles dans un fuseau horaire particulier: 2014-01-14T16: 33: 33.373-05: 00 [America / New_york]
Vous pouvez le comparer avec la méthode précédente pour convertir l'heure locale en temps GMT. Soit dit en passant, tout comme avant Java 8, ne faites pas que le texte correspond au fuseau horaire mal, sinon vous rencontrerez une telle exception:
La copie de code est la suivante:
Exception dans Thread "Main" Java.time.zone.zonerulesexception: ID inconnu du fuseau horaire: Asie / Tokyo
sur java.time.zone.zonerulesprovider.getprovider (zonerulesprovider.java:272)
sur java.time.zone.zonerulesprovider.getrules (zonerulesprovider.java:227)
sur java.time.zoneregion.ofid (zoneRegion.java:120)
sur java.time.zoneid.of (Zoneid.java:403)
sur java.time.zoneid.of (Zoneid.java:351)
Exemple 13 Comment représenter une date fixe, comme l'heure d'expiration des cartes de crédit
Tout comme le jour du mois représente une journée récurrente, Yearmonth est une autre combinaison, qui représente des dates telles que la date de remboursement des cartes de crédit, la date d'échéance des dépôts fixes, la date d'échéance des options. Vous pouvez utiliser cette classe pour savoir combien de jours il y a ce mois-ci.
La copie de code est la suivante:
Yearmonth CurrentyEarmonth = Yearmonth.Now (); System.out.print ("Days en mois% s:% d% n", CurrentyEarmonth, CurrentyEarmonth.LengthOfMonth ());
Yearmonth CreditCardexpiry = Yearmonth.of (2018, mois.february);
System.out.printf ("Votre carte de crédit expire sur% s% n", CreditCardexpiry);
Sortir:
Jours de l'année du mois 2014-01: 31
Votre carte de crédit expire le 2018-02
Exemple 14 Comment vérifier l'année du leap dans Java 8
Ce n'est pas compliqué. Si vous souhaitez toujours recréer la roue, vous pouvez consulter ce code.
La copie de code est la suivante:
if (aujourd'hui.isapyear ()) {
System.out.println ("Cette année est un an");
}autre {
System.out.println ("2014 n'est pas une année de saut");
}
Sortie: 2014 n'est pas une année de saut
Vous pouvez vérifier quelques années de plus pour voir si les résultats sont corrects.
Exemple 15 Combien de jours et de mois sont inclus entre deux dates
Une autre tâche courante consiste à calculer combien de jours, de semaines ou d'années sont incluses entre deux dates données. Vous pouvez utiliser la classe Java.time.period pour remplir cette fonction. Dans l'exemple suivant, nous calculerons le nombre de mois que la date actuelle est séparée d'une date future.
La copie de code est la suivante:
LocalDate java8release = localDate.of (2014, Month.March, 14);
Pério PinomestonextJavarelease =
Période.between (aujourd'hui, java8release);
System.out.println ("Mois restants entre aujourd'hui et Java 8 Libération:" + PÉRIODTONEXTJavarelease.getMonths ());
Sortir:
Mois à faire entre aujourd'hui et Java 8 version: 2
Comme vous pouvez le voir, ce mois-ci est en janvier et la date de sortie de Java 8 est mars, il y a donc 2 mois entre eux.
Exemple 16 Date et heure avec décalage du fuseau horaire
Dans Java 8, vous pouvez utiliser la classe ZoneOffset pour représenter un certain fuseau horaire, comme l'Inde est GMT ou UTC5: 30, et vous pouvez utiliser sa méthode statique ZoneOffset.of () pour obtenir le fuseau horaire correspondant. Tant que vous obtenez ce décalage, vous pouvez utiliser LocalDateTime et ce décalage pour créer un OffsetDateTime.
La copie de code est la suivante:
LocalDateTime DateTime = LocalDateTime.of (2014, Month.January, 14, 19, 30);
ZONEOFFSET OFFSET = ZONEOFFSET.OF ("+ 05:30");
OffsetDateTime Date = OffsetDateTime.of (DateTime, Offset);
System.out.println ("Date et heure avec le décalage du fuseau horaire en Java:" + Date);
Sortir:
Date et heure avec le décalage du fuseau horaire en Java: 2014-01-14T19: 30 + 05: 30
Vous pouvez voir que l'heure et la date actuelles sont liées au fuseau horaire. Un autre point est que OffsetDateTime est principalement pour les machines à comprendre.
Exemple 17 Comment obtenir l'horodatage actuel dans Java 8
Si vous vous souvenez encore comment obtenir l'horodatage actuel avant Java 8, c'est un morceau de gâteau maintenant. La classe instantanée a une méthode d'usine statique maintenant () qui peut renvoyer l'horodatage actuel, comme suit:
La copie de code est la suivante:
Timestamp instantané = Instant.Now ();
System.out.println ("quelle est la valeur de cet instant" + horodatage);
Sortir:
Quelle est la valeur de cet instant 2014-01-14T08: 33: 33.379Z
On peut voir que l'horodatage actuel contient la date et l'heure, ce qui est très similaire à java.util.date. Convertir entre eux, par exemple, Date.from (instant) est utilisé pour convertir instantanément en java.util.date, et date.oinstant () convertit la date en instant.
Exemple 18 Comment analyser / format les dates à l'aide d'un formateur prédéfini dans Java 8
Avant Java 8, le formatage de l'heure et de la date était un travail technique. Grâce aux variables de fil locales, cela le rend réalisable dans un environnement multithread, mais Java maintient cet état depuis longtemps. Cette fois, il introduit un tout nouveau formateur de date et d'heure à sécurité. Il est également livré avec des formats prédéfinis, y compris des formats de date couramment utilisés. Par exemple, dans cet exemple, nous utilisons le format de base de base prédéfini, qui formara le 14 février 2014 en 20140114.
La copie de code est la suivante:
String dayafterTomMorrow = "20140116";
LocalDate Formatted = localDate.Parse (DayAfterTommorw,
DateTimeFormatter.basic_iso_date);
System.out.printf ("Date générée à partir de la chaîne% s est% s% n", dayaftertommorw, formaté);
Sortir:
Date générée à partir de la chaîne 20140116 est 2014-01-16
Vous pouvez voir que la date générée correspond à la valeur de la chaîne spécifiée, ce qui signifie que le format de date est légèrement différent.
Exemple 19 Comment utiliser un formateur personnalisé pour analyser les dates en Java
Dans l'exemple ci-dessus, nous avons utilisé le format à date temporelle intégré pour analyser la chaîne de date. Bien sûr, le formateur prédéfini est en effet bon, mais parfois vous devrez peut-être utiliser un format de date personnalisé. Le format de date dans l'exemple suivant est "mmm dd yyyy". Vous pouvez transmettre n'importe quel modèle à la méthode statique de DateTimeFormatter (), qui renvoie une instance, la valeur littérale de ce modèle étant la même que dans l'exemple précédent. Par exemple, M représente toujours le mois, tandis que m est toujours le segment. Un mode non valide lancera une exception DatetimeParseException, mais s'il s'agit d'une erreur logique, comme l'utilisation de M lorsqu'il est temps d'utiliser M, il n'y a rien à faire.
La copie de code est la suivante:
String goodfriday = "18 avril 2014";
essayer {
DateTimeFormatter Formatter = DateTimeFormatter.ofpattern ("mmm dd yyyy");
LocalDate Holiday = LocalDate.Parse (GoodFriday, Formatter);
System.out.printf ("STRING ASSEED COMMENT SUC LA CHAMBRE S, la date est% s% n", GoodFriday, Holiday);
} catch (dateTimeParseException ex) {
System.out.printf ("% s n'est pas analysé!% N", goodfriday);
ex.printStackTrace ();
}
Sortir:
String analysé avec succès 18 avril 2014, date est 2014-04-18
Vous pouvez voir que la valeur de la date correspond à la chaîne passée, mais le format est différent.
Exemple 20 Comment formater les dates et les convertir en chaînes dans Java 8
Dans les deux exemples précédents, bien que nous ayons utilisé la classe DateTimeFormatter, nous analysons principalement la chaîne de date. Dans cet exemple, nous allons faire le contraire. Ici, nous avons une instance de la classe LocalDateTime, que nous voulons convertir en une chaîne de date formatée. C'est de loin le moyen le plus simple et le plus pratique de convertir les dates en cordes en Java. L'exemple suivant renverra une chaîne formatée. La même chose que l'exemple précédent est que nous devons toujours utiliser la chaîne de modèle spécifiée pour créer une instance de la classe DateTimeFormatter, mais l'appel n'est pas la méthode Parse de la classe locale, mais sa méthode Format (). Cette méthode renverra une chaîne représentant la date actuelle et le modèle correspondant est défini dans l'instance de DateTimeFormatter entrante.
La copie de code est la suivante:
LocalDateTime ArrivalDate = localDateTime.now ();
essayer {
DateTimeFormatter Format = DateTimeFormatter.ofpattern ("mmm dd yyyy hh: mm a");
String Landing = ArrivalDate.Format (format);
System.out.printf ("Arriver à:% s% n", atterrissage);
} catch (dateTimeException ex) {
System.out.printf ("% s ne peut pas être formaté!% N", Arrivée);
ex.printStackTrace ();
}
Sortie: Arrivée au: 14 janvier 2014 16:33
On peut voir que l'heure actuelle est représentée par le modèle "mmm dd yyyy hh: mm a" donné, qui contient le mois représenté par trois lettres et le temps représenté par AM et PM.
Plusieurs points clés de l'API de date et d'heure dans Java 8
Après avoir lu ces exemples, je crois que vous avez une certaine compréhension de l'API Time and Date de Java 8. Passons maintenant en revue quelques éléments clés sur cette nouvelle API.
1. Il fournit javax.time.zoneid pour gérer les fuseaux horaires.
2. Il fournit des cours locaux et locaux
3. Toutes les classes de la nouvelle API HEURE et DATE dans Java 8 sont immuables et en filetage, ce qui est exactement l'opposé de la date précédente et des API de calendrier, où ils sont comme Java.util.Date et SimpledateFormat. -sûr.
4. Un point très important dans l'API de l'heure et de la date est qu'il définit clairement les concepts de base de l'heure et de la date, tels que l'heure, la durée, la date, l'heure, le fuseau horaire et la période instantanés. Ils sont tous basés sur le système de calendrier ISO.
5. Chaque développeur Java devrait connaître au moins ces cinq classes dans cette nouvelle API:
5.1) Instant Il représente un horodatage, comme 2014-01-14T02: 20: 13.592Z, qui peut être obtenu à partir de la classe java.time.clock, comme ceci: Instant Current = Clock.System (ZoneId.of ("Asia / Tokyo ")). Instant ();
5.2) LocalDate Il représente une date sans temps, comme 2014-01-14. Il peut être utilisé pour stocker les anniversaires, l'anniversaire, les dates d'induction, etc.
5.3) Localtime, il représente une heure sans date
5.4) localDateTime Il contient du temps et de la date, mais il n'y a pas de décalage avec le fuseau horaire
5.5) ZonedDateTime C'est un temps plein avec un ajustement du fuseau horaire basé sur le temps UTC / Greenwich
1. Le package principal de cette bibliothèque est Java.Time, qui contient des classes représentant la date, l'heure, l'instant et la durée. Il a deux sous-packages, l'un est java.time.foramt, ce qui est évident à quoi cela est utilisé, et l'autre est Java.time.Temporal, qui peut accéder à divers champs à partir d'un niveau inférieur.
2. Le fuseau horaire fait référence à la région sur la terre qui partage le même temps standard. Chaque fuseau horaire a un identifiant unique, et il y a aussi un format région / ville (Asie / Tokyo) et un temps de décalage à partir de Greenwich Time. Par exemple, le temps de décalage à Tokyo est de +09: 00.
3.OffsetDateTime La classe contient en fait localDateTime et ZoneOffset. Il est utilisé pour représenter une date complète (année, mois, jour) et heure (heure, minute, nanoseconde) contenant le décalage du temps de Greenwich (+/- heure: minute, par exemple +06: 00 ou -08: 00).
4. La classe DateTimeFormatter est utilisée pour formater et analyser les dates en Java. Contrairement à SimpledateFormat, il est immuable et en sécurité et peut être affecté à une variable statique si nécessaire. La classe DateTimeFormatter fournit de nombreux formateurs prédéfinis et vous pouvez également personnaliser le format que vous souhaitez. Bien sûr, selon la convention, il a également une méthode Parse () utilisée pour convertir la chaîne en date, et s'il y a une erreur pendant la conversion, il lancera une exception DatetimeParseException. De même, la classe DateFormatter a également une méthode format () pour la mise en forme des dates.
5. En d'autres termes, les deux formats de date de "Mmm D Yyy" et "MMM DD Yyyy" sont également légèrement différents. Celui qui arrive dans le "2 janvier 2014" rapportera une erreur car il s'attend à ce que deux personnages viennent du mois. Pour résoudre ce problème, si le jour est un seul chiffre, vous devez compenser 0 devant, par exemple, "2 janvier 2014" devrait être changé en "02 janvier 2014".
Il s'agit de Java 8, la nouvelle API HEURE ET DATE. Ces courts exemples sont suffisants pour comprendre certaines des nouvelles classes de cette nouvelle API. Puisqu'il est expliqué sur la base de tâches réelles, lorsque vous rencontrez du travail en Java qui doit traiter l'heure et la date, vous n'avez plus à rechercher. Nous avons appris à créer et à modifier les instances de date. Nous avons également appris les différences entre les dates pures, la date plus l'heure, la date plus les fuseaux horaires, savoir comparer deux dates et comment trouver une certaine journée à une date spécifiée, comme le prochain anniversaire, anniversaire ou date d'assurance. Nous avons également appris à analyser et à formater les dates de Java 8 de manière à se disperser sans utiliser de variables de filetage ou de bibliothèques tierces. La nouvelle API est compétente pour les tâches liées à la date et à la date.