Comment gérer les fuseaux horaires du calendrier à l'aide de Java
Question :
Vous avez un horodatage de votre application qui peut provenir de n’importe quel fuseau horaire. Cependant, les données doivent être envoyées à un WebService qui suppose qu'elles sont toujours en GMT. Vous devez convertir l'heure de saisie de l'utilisateur de son fuseau horaire local en GMT à son insu.
Réponse :
La gestion du fuseau horaire de Java peut prêter à confusion. Alors que les horodatages sont généralement stockés en GMT, la classe Calendar utilise par défaut le fuseau horaire actuel du système. Pour relever ce défi, considérez ce qui suit :
import java.util.Calendar; import java.util.TimeZone; public class ConvertTimeZone { public static void main(String[] args) { // Example input time (EST) Calendar input = Calendar.getInstance(TimeZone.getTimeZone("EST")); input.set(2008, Calendar.MAY, 1, 18, 12, 0); // Create a Calendar in GMT Calendar gmt = convertToGmt(input); // Output the converted time (GMT) System.out.println(gmt.getTime()); // 2008-05-01 11:12:00 GMT } public static Calendar convertToGmt(Calendar cal) { Date date = cal.getTime(); TimeZone tz = cal.getTimeZone(); long msFromEpochGmt = date.getTime(); // Convert to milliseconds since epoch in GMT int offsetFromUTC = tz.getOffset(msFromEpochGmt); // Create a new Calendar in GMT and adjust for the offset Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); gmtCal.setTime(date); gmtCal.add(Calendar.MILLISECOND, offsetFromUTC); return gmtCal; } }
Ce code suit les étapes suivantes :
En utilisant cette approche, vous pouvez convertir avec précision l'heure de saisie de l'utilisateur de n'importe quel fuseau horaire en GMT, garantissant ainsi la compatibilité des données avec le WebService.
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!