Maison >Java >javaDidacticiel >Comment convertir avec précision la date et l'heure dans un fuseau horaire différent en Java ?

Comment convertir avec précision la date et l'heure dans un fuseau horaire différent en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-29 09:44:30513parcourir

How to Accurately Convert Date and Time to a Different Time Zone in Java?

Convertir la date et l'heure vers un fuseau horaire différent en Java

Lorsque vous essayez de convertir la date et l'heure actuelles dans un fuseau horaire différent, un problème courant survient lorsque le temps de sortie n'est pas cohérent avec la valeur attendue. Pour corriger cela, envisagez la solution suivante :

<code class="java">import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class DateAndTimeZoneConversion {

    public static void main(String[] args) {
        try {
            // Get the current date and time
            Calendar currentDate = Calendar.getInstance();
            String strDate = null;
            DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
            strDate = formatter.format(currentDate.getTime());

            // Convert from current time zone to IST
            TimeZone fromTimeZone = TimeZone.getDefault();
            TimeZone istTimeZone = TimeZone.getTimeZone("IST");

            currentDate.setTimeZone(fromTimeZone);
            currentDate.add(Calendar.MILLISECOND, fromTimeZone.getRawOffset() * -1);
            if (fromTimeZone.inDaylightTime(currentDate.getTime())) {
                currentDate.add(Calendar.MILLISECOND, currentDate.getTimeZone().getDSTSavings() * -1);
            }

            // Convert to Central Standard Time (CST)
            TimeZone toTimeZone = TimeZone.getTimeZone("CST");
            currentDate.add(Calendar.MILLISECOND, toTimeZone.getRawOffset());
            if (toTimeZone.inDaylightTime(currentDate.getTime())) {
                currentDate.add(Calendar.MILLISECOND, toTimeZone.getDSTSavings());
            }

            // Print the converted time
            System.out.println("The current time in India is: " + istTimeZone.getDisplayName() + " :: " + formatter.format(currentDate.getTime()));
            System.out.println("The current time in Central Standard Time is: " + toTimeZone.getDisplayName() + " :: " + formatter.format(currentDate.getTime()));
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}</code>

Ce code corrige l'intervalle de temps en tenant correctement compte des décalages et de l'heure d'été pour les fuseaux horaires source et de destination, garantissant ainsi une conversion précise de l'heure.

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!

Déclaration:
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