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; }
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]
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!