Passez vos dates en GMT en Java

Publié le par seekaftersomething.over-blog.com

Les journées à 23 heures ou à 25 heures sont toujours problématiques dans les applications.

Par défaut, les Date et Calendar sont sur la zone horaire de Paris avec la gestion automatique du changement d'heure.
Ce n'est pas très cool quand on veut afficher de façon fixe les 24 heures d'une journée quand un Calendar en gère 23 ou 25.

Pour ne pas avoir de problème avec le changement d'heure, il faut utiliser l'instance GMT du Calender :

 Calendar calGMT = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 


Et là plus de problème de d'ajout ou de suppression automatique d'heure quand vous ajoutez une heure dans l'objet.


C'est bien gentil tout ça vous allez me dire, mais moi j'ai un objet Date au départ et quand je le mets dans un Calendar en GMT il fait un décalage horaire tout seul.

Bon, pas de panique. Voici une petite méthode qui prend une date et qui retourne un Calendar en GMT avec exactement la même heure :


 public static Calendar dateToCalendarGMT(Date date) { Calendar calGMT = Calendar.getInstance(TimeZone.getTimeZone("GMT")); Calendar cal = Calendar.getInstance(); cal.setTime(date); Date d = new Date(cal.getTimeInMillis() + cal.get(Calendar.ZONE_OFFSET) 
+ cal.get(Calendar.DST_OFFSET)); calGMT.setTime(d); return calGMT; }



Publié dans Java

Commenter cet article