SimpleDateFormatter.parse donnant une sortie dans un format différent de celui spécifié
Cette question se pose lorsque vous essayez de convertir un horodatage UNIX en une date avec un formater en utilisant SimpleDateFormat. Malgré le réglage du format souhaité, le résultat sdf.parse apparaît dans un format différent.
Solution :
Pour résoudre ce problème, il est recommandé d'éviter de transmettre les dates comme chaînes à une base de données MySQL. Au lieu de cela, il est plus sûr et plus concis de transmettre des objets de date, en particulier des instances de l'API de date et d'heure Java (java.time). Un objet LocalDateTime convient dans ce cas :
<code class="java">String ep = "a1527069600"; long epoch = Long.parseLong(ep.substring(1)); Instant inst = Instant.ofEpochSecond(epoch); LocalDateTime ldt = inst.atZone(ZoneId.of("Asia/Calcutta")).toLocalDateTime();</code>
Pour le stockage de la base de données, LocalDateTime représente la date et l'heure au format '2018-05-23T15:30'.
Pour conserver le LocalDateTime dans un Base de données MySQL :
<code class="java">PreparedStatement ps = myDatabaseConnection.prepareStatement( "insert into my_table (my_date_time) values (?)"); ps.setObject(1, ldt);</code>
Alternative pour les valeurs UTC :
Si les valeurs de la base de données doivent être stockées en UTC (temps universel coordonné), utilisez la conversion suivante :
<code class="java">LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();</code>
Avantages de l'utilisation de java.time :
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!