Maison >Java >javaDidacticiel >Quelle est la différence entre ZonedDateTime et OffsetDateTime
ZonedDateTime et OffsetDateTime sont deux classes très populaires dans l'API Java 8 DateTime ; elles peuvent toutes deux stocker un moment précis à la nanoseconde sur une chronologie. Alors y a-t-il des différences entre eux ? L'article suivant expliquera la différence entre ZonedDateTime et OffsetDateTime. J'espère qu'il sera utile à tout le monde. [Recommandation du didacticiel vidéo : Tutoriel Java]
Qu'est-ce que ZonedDateTime ?
ZonedDateTime est une représentation immuable d'une date-heure avec des fuseaux horaires dans le système de calendrier ISO-8601 (exemple : 2007-12-03T10:15:30+01:00 Europe/ Paris). Il contient l'équivalent de trois objets distincts : localdatetime, zoneid et wanted zoneoffset.
Ici, le ZoneID détermine comment et quand le décalage change. Par conséquent, les décalages ne peuvent pas être définis librement, car la zone contrôle quels décalages sont valides.
Pour obtenir le ZonedDateTime actuel pour une zone spécifique, nous utiliserons :
ZoneId zone = ZoneId.of("Europe/Berlin"); ZonedDateTime zonedDateTime = ZonedDateTime.now(zone);
La classe ZonedDateTime fournit également des méthodes intégrées pour convertir une date donnée d'un fuseau horaire à un autre :
ZonedDateTime destZonedDateTime = sourceZonedDateTime.withZoneSameInstant(destZoneId);
Enfin, il comprend parfaitement l'heure d'été et gère les ajustements de l'heure d'été. C'est souvent utile lorsque l'on souhaite afficher un champ datetime dans un fuseau horaire spécifique.
Qu'est-ce que OffsetDateTime ?
OffsetDateTime est une représentation immuable de la date-heure qui est identique à l'heure UTC/Greenwich dans le système de calendrier ISO-8601 (tel que 2007-12-03T10:15:30+01 :00) Il y a un décalage. En d’autres termes, il stocke tous les champs de date et d’heure, précis à la nanoseconde près, ainsi que les décalages par rapport à GMT/UTC.
Obtenons l'OffsetDateTime actuel à partir de GMT/UTC, décalé de deux heures :
ZoneOffset zoneOffSet= ZoneOffset.of("+02:00"); OffsetDateTime offsetDateTime = OffsetDateTime.now(zoneOffSet);
Différence entre ZonedDateTime et OffsetDateTime
ZonedDateTime :
● Stocke tous les champs de date et d'heure avec une précision de la nanoseconde, le fuseau horaire et le décalage de fuseau pour gérer les heures de date locales ambiguës
● Impossible de librement définir le décalage car la zone contrôle les valeurs de décalage valides
● Prend entièrement en charge l'heure d'été et gère les ajustements de l'heure d'été
● Très pratique pour afficher les champs date/heure dans les fuseaux horaires spécifiques à l'utilisateur
OffsetDateTime :
● Stocke tous les champs de date et d'heure avec une précision de la nanoseconde et un décalage par rapport à GMT/UTC (aucune information de fuseau horaire)
● Doit être utilisé pour stocker des dates dans une base de données ou communiquer sur le réseau
Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !
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!