SimpledateFormat ("yyyy-mm-d't'hh: mm: ss'z '") numéro: affichez ist timezone
En Java, la classe SimpledateFormat vous permet de formater et d'analyser les dates en fonction d'un modèle prédéfini. Lorsque vous utilisez le modèle "Yyyy-mm-d't'hh: mm: ss'z '", il devrait représenter une date et une heure dans le fuseau horaire UTC. Cependant, un problème se pose lorsque l'analyse d'une telle chaîne.
Considérez le code suivant:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); Date date = sdf.parse("2013-09-29T18:46:19Z"); System.out.println(date);
La sortie attendue serait une date et une heure dans le fuseau horaire UTC. Cependant, de nombreux utilisateurs ont signalé qu'il affiche plutôt une date et une heure dans le fuseau horaire IST (Indian Standard Time). Cela conduit à la confusion et à une manipulation de date incorrecte.
Solution: définissez explicitement le fuseau horaire
Le problème se pose parce que le constructeur simpletateFormat initialise uniquement le modèle de date mais ne définit pas le Fuseau horaire explicitement. Pour corriger cela, vous devez définir le fuseau horaire sur UTC manuellement. Voici comment vous le faites:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); sdf.setTimeZone(TimeZone.getTimeZone("GMT")); Date date = sdf.parse("2013-09-29T18:46:19Z"); System.out.println(date);
En définissant le fuseau horaire sur GMT, l'analyseur SimpledateFormat interprétera correctement la chaîne d'entrée et affichera la date et l'heure dans le fuseau horaire UTC attendu.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3