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>
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>
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>
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!