Maison >base de données >tutoriel mysql >Pourquoi SimpleDateFormat.parse génère-t-il un format de sortie inattendu ?

Pourquoi SimpleDateFormat.parse génère-t-il un format de sortie inattendu ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 03:12:02316parcourir

Why Does SimpleDateFormat.parse Yield an Unexpected Output Format?

SimpleDateFormatter.parse donne un format de sortie inattendu

Dans votre code, vous avez rencontré une divergence entre SimpleDateFormatter.format et SimpleDateFormatter.parse. différents formats de sortie. Examinons les raisons de ce comportement.

La classe SimpleDateFormatter nécessite à la fois le formatage de la date et les informations de fuseau horaire pour manipuler correctement les dates. Dans votre cas, le format que vous avez spécifié est "jj/MM/aaaa hh:mm:ss a" (par exemple, 23/05/2018 15:30:00). Cependant, lorsque vous analysez la date formatée en utilisant le même format, elle reconnaît le fuseau horaire IST (Indian Standard Time) en raison du « a » dans le format, qui représente la désignation AM/PM.

Ceci signifie que SimpleDateFormatter.parse interprète la date avec le fuseau horaire IST en place, ce qui donne l'horodatage que vous avez observé : "Mercredi 23 mai 15:30:00 IST 2018." Ce format est différent de celui que vous avez spécifié initialement car il inclut les informations de fuseau horaire.

Pour résoudre ce problème, envisagez les solutions suivantes :

  • Utilisez java.time LocalDateTime : Comme suggéré dans la réponse acceptée, l'utilisation de LocalDateTime de l'API java.time offre une approche plus propre et plus moderne. Cet objet encapsule les informations de date et d’heure sans biais de fuseau horaire. Vous pouvez convertir un horodatage d'époque en LocalDateTime et l'insérer directement dans votre base de données MySQL sans rencontrer de problèmes d'analyse.
  • Définissez le fuseau horaire de manière explicite : Alternativement, si vous souhaitez utiliser SimpleDateFormatter, assurez-vous que vous définissez explicitement le fuseau horaire avant d'appliquer l'analyse. En spécifiant le fuseau horaire à l'avance, vous pouvez contrôler l'interprétation des valeurs de date et d'heure.

En résumé, l'écart entre SimpleDateFormatter.format et SimpleDateFormatter.parse est dû à des considérations de fuseau horaire. En tirant parti de l'API java.time ou en gérant explicitement les fuseaux horaires dans SimpleDateFormatter, vous pouvez éviter ces incohérences de formatage et garantir une gestion cohérente des dates.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn