Maison > Java > javaDidacticiel > le corps du texte

Comment convertir les horodatages EST en GMT en Java ?

Barbara Streisand
Libérer: 2024-11-12 16:36:02
original
727 Les gens l'ont consulté

How to Convert EST Timestamps to GMT in Java?

Comment convertir les fuseaux horaires à l'aide des horodatages Java

Dans ce scénario, vous avez un horodatage dans le fuseau horaire EST et devez le convertir à GMT pour un appel de service Web. Voici une explication détaillée :

Conversion de EST en GMT

Le problème survient car la valeur d'horodatage est initialement supposée être en GMT, mais elle peut en fait être en GMT. fuseau horaire local différent (EST dans ce cas). Pour convertir le paramètre utilisateur de EST en GMT, vous devez tenir compte du décalage horaire entre les deux fuseaux horaires.

Utilisation de la classe Calendrier

Vous utilisez la classe Calendar pour manipuler l’horodatage. Cependant, vous devez savoir que la classe Calendar fonctionne toujours en millisecondes depuis l'époque, quel que soit le fuseau horaire que vous spécifiez. Cela signifie que lorsque vous créez un calendrier à partir d'un horodatage à l'aide de Calendar.getInstance (GMT_TIMEZONE), la date sous-jacente n'est pas ajustée pour correspondre au fuseau horaire GMT.

Solution : Ajustement du décalage horaire

Pour convertir avec précision l'horodatage en GMT, vous devez tenir compte du décalage horaire. L'extrait de code suivant fournit une solution :

public static Calendar convertToGmt(Calendar cal) {

    Date date = cal.getTime();
    TimeZone tz = cal.getTimeZone();

    // Compute milliseconds since epoch in GMT
    long msFromEpochGmt = date.getTime();

    // Get offset from UTC in milliseconds at the given time
    int offsetFromUTC = tz.getOffset(msFromEpochGmt);

    // Create a new Calendar in GMT and adjust the date with the offset
    Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
    gmtCal.setTime(date);
    gmtCal.add(Calendar.MILLISECOND, offsetFromUTC);

    return gmtCal;
}
Copier après la connexion

Exemple de sortie

Si vous transmettez l'heure actuelle (en EDT) dans la méthode convertToGmt, vous obtiendrez le sortie suivante :

DEBUG - input calendar has date [Thu Oct 23 12:09:05 EDT 2008]
DEBUG - offset is -14400000
DEBUG - Created GMT cal with date [Thu Oct 23 08:09:05 EDT 2008]
Copier après la connexion

Cela montre que 12:09:05 EDT a été converti avec succès en 08:09:05 GMT.

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