Maison > Java > javaDidacticiel > le corps du texte

Comment pouvez-vous tenir compte de l'heure d'été lors de l'impression EST en Java ?

Susan Sarandon
Libérer: 2024-11-04 12:43:29
original
237 Les gens l'ont consulté

How Can You Account for Daylight Savings Time When Printing EST in Java?

Aborder l'heure d'été avec TimeZone en Java

Le concept d'heure d'été (DST) peut souvent être une source de confusion dans la programmation, en particulier lorsque vous travaillez avec la classe TimeZone de Java. Cet article explore un problème spécifique rencontré lors de la tentative d'impression de l'heure normale de l'Est (EST) dans une application Java, même en tenant compte de l'heure d'été.

Le problème avec les abréviations de fuseau horaire

Dans le code donné, le développeur tente de définir le fuseau horaire sur EST en utilisant :

<code class="java">Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("EST"));</code>
Copier après la connexion

Ce code peut sembler simple, mais le piège potentiel réside dans l'utilisation de l'abréviation à 3 lettres "EST. " Cela représente l'heure normale de l'Est, qui ne prend pas en compte l'heure d'été. En termes simples, l'heure d'été ne fait pas partie de l'EST.

La solution : utiliser les identifiants de zone TZDB

Pour éviter toute confusion et incohérences, il est fortement recommandé d'utiliser plutôt les identifiants de zone TZDB. des abréviations de fuseau horaire. Ces identifiants sont universellement reconnus et identifient de manière unique les fuseaux horaires, en tenant compte de tous les aspects et variations, y compris l'heure d'été.

Dans ce cas, l'identifiant correct à utiliser pour le fuseau horaire de l'Est est « Amérique/New_York » :

<code class="java">TimeZone zone = TimeZone.getTimeZone("America/New_York");</code>
Copier après la connexion

Rassembler le tout

Avec l'identifiant de fuseau horaire correct, imprimer l'heure actuelle à l'heure normale de l'Est, en tenant compte de l'heure d'été, devient simple :

<code class="java">DateFormat format = DateFormat.getDateTimeInstance();
format.setTimeZone(zone);
System.out.println(format.format(new Date()));</code>
Copier après la connexion

Ce code garantit que l'heure imprimée sera toujours exacte, que l'heure d'été soit observée ou non. En tirant parti des identifiants de zone TZDB, vous pouvez éliminer la confusion et les erreurs potentielles associées à l'utilisation des abréviations de fuseau horaire.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal