Maison > Java > javaDidacticiel > Pourquoi mon code Java affiche-t-il une heure incorrecte lors de la conversion vers un fuseau horaire spécifique, et comment puis-je y remédier ?

Pourquoi mon code Java affiche-t-il une heure incorrecte lors de la conversion vers un fuseau horaire spécifique, et comment puis-je y remédier ?

Linda Hamilton
Libérer: 2024-10-29 14:53:02
original
380 Les gens l'ont consulté

Why is my Java code showing an incorrect time when converting to a specific timezone, and how can I fix it?

Conversion de la date et de l'heure en fuseau horaire spécifique en Java

Pour tenter de convertir la date et l'heure actuelles du système en un fuseau horaire spécifique, vous a rencontré un écart entre le résultat attendu et l'heure réelle dans le fuseau horaire souhaité. Pour résoudre ce problème, nous examinerons le code que vous avez fourni et identifierons les causes potentielles du décalage horaire.

Le code utilise les classes Calendar et SimpleDateFormat pour gérer les opérations de date et d'heure. Vous définissez l’heure actuelle sur currentdate et la formatez sous forme de chaîne à l’aide de l’objet formateur. Ensuite, vous créez un objet TimeZone pour le fuseau horaire cible (CST dans votre cas) et le définissez comme fuseau horaire pour le formateur. Enfin, vous analysez la chaîne de date formatée pour obtenir la date résultante dans le fuseau horaire spécifié.

L'écart survient car le formateur formate la date dans le fuseau horaire local avant de la convertir dans le fuseau horaire cible. Pour tenir compte de cela, vous devez ajuster explicitement l'heure en ajoutant ou en soustrayant la différence de décalage entre le fuseau horaire local et le fuseau horaire cible.

Voici un extrait de code mis à jour qui devrait fournir la conversion d'heure correcte :

<code class="java">// Create a calendar and set it to the local timezone
Calendar calendar = Calendar.getInstance();
TimeZone fromTimeZone = calendar.getTimeZone();

// Create a calendar for the target timezone
TimeZone toTimeZone = TimeZone.getTimeZone("CST");

// Convert the current time to the local timezone
calendar.setTimeZone(fromTimeZone);
calendar.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1);
if (fromTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, calendar.getTimeZone().getDSTSavings() * -1);
}

// Convert the time to the target timezone
calendar.add(Calendar.MILLISECOND, toTimeZone.getRawOffset());
if (toTimeZone.inDaylightTime(calendar.getTime())) {
    calendar.add(Calendar.MILLISECOND, toTimeZone.getDSTSavings());
}

// Get the final date and time in the target timezone
Date theResult = calendar.getTime();

System.out.println("The current time in India is  :: " + currentdate.getTime());
System.out.println("The date and time in :: " + toTimeZone.getDisplayName() + " is ::" + theResult);</code>
Copier après la connexion

En ajustant l'heure en fonction des décalages horaires, vous devriez maintenant obtenir la date et l'heure correctes dans le fuseau horaire spécifié.

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