SimpleDateFormatter.parse 指定された形式とは異なる形式で出力される
この質問は、UNIX タイムスタンプを特定の日付に変換しようとするときに発生します。 SimpleDateFormat を使用した形式。目的の形式を設定しているにもかかわらず、sdf.parse の結果は異なる形式で表示されます。
解決策:
この問題を解決するには、日付を次のように渡すことを避けることをお勧めします。文字列を MySQL データベースにコピーします。代わりに、日付オブジェクト、特に Java 日付と時刻 API (java.time) のインスタンスを渡す方が安全かつ簡潔です。 LocalDateTime オブジェクトは、次の場合に適しています。
<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>
データベース ストレージの場合、LocalDateTime は '2018-05-23T15:30' の形式で日時を表します。
LocalDateTime をMySQL データベース:
<code class="java">PreparedStatement ps = myDatabaseConnection.prepareStatement( "insert into my_table (my_date_time) values (?)"); ps.setObject(1, ldt);</code>
UTC 値の代替:
データベース値を UTC (協定世界時) で保存する必要がある場合は、次の変換を使用します。
<code class="java">LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();</code>
java.time を使用する利点:
以上がSimpleDateFormat.parse が指定された形式とは異なる形式を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。