SimpleDateFormat("aaaa-MM-jj'T'HH:mm:ss'Z'") affiche le fuseau horaire comme IST
Le Le constructeur SimpleDateFormat("aaaa-MM-jj'T'HH:mm:ss'Z'") est conçu pour analyser la date chaînes au format ISO-8601. Cependant, le suffixe « Z » à lui seul ne définit pas le fuseau horaire pour la date analysée.
Votre problème survient lorsque vous utilisez ce format pour analyser une chaîne de date telle que "2013-09-29T18:46:19Z". Comme « Z » représente l'heure zouloue (UTC), vous pouvez vous attendre à ce que la date analysée s'affiche au format UTC. Cependant, vous rencontrez le fuseau horaire IST (Indian Standard Time) affiché.
Comprendre le problème
La clé ici est que vous n'avez pas explicitement défini le fuseau horaire pour l'objet SimpleDateFormat. Par conséquent, il s'agit par défaut du fuseau horaire par défaut de la JVM, qui est probablement IST dans votre cas. Ainsi, alors que la chaîne de date utilise le suffixe « Z » pour indiquer UTC, l'objet SimpleDateFormat l'analyse dans IST.
Résoudre le problème
Pour résoudre ce problème et assurez-vous que la date analysée est affichée en UTC, définissez explicitement le fuseau horaire de SimpleDateFormat sur GMT using :
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
En définissant le fuseau horaire sur GMT, vous dites à SimpleDateFormat d'analyser la chaîne de date en UTC, même si elle porte le suffixe « Z ». Cela garantit que la date analysée s'affiche correctement en UTC.
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!