SimpleDateFormatter.parse の出力が指定したものと異なる
SimpleDateFormat を使用して UNIX タイムスタンプを日付に変換する場合、指定した形式とこの例では、UNIX タイムスタンプ (「a1527069600」) を「dd/MM/yyyy hh:mm:ss a」形式の日付に変換することが目標です。ただし、SimpleDateFormatter.format の後に SimpleDateFormatter.parse を使用すると、異なる出力が生成されます。
不一致の原因SimpleDateFormatter.parse は正確な文字列を期待しているため、不一致が発生します。インスタンス化時に指定された形式 (「dd/MM/yyyy hh:mm:ss a」)。この場合、SimpleDateFormatter.format は、予想される入力形式とは異なる形式で日付を出力するため、解析操作が失敗します。
解決策この問題を回避するには、日付文字列を MySQL データベースに渡さないことをお勧めします。代わりに、日付オブジェクトを使用してください。最新の Java 日付と時刻 API である java.time は、日付の処理を容易にする LocalDateTime のようなクラスを提供します。
例:このコードは UNIX を変換します。タイムスタンプを LocalDateTime に変換し、MySQL データベースに直接挿入できます。
<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(); System.out.println(ldt.toString()); // Output: 2018-05-23T15:30 PreparedStatement ps = myDatabaseConnection.prepareStatement( "insert into my_table (my_date_time) values (?)"); ps.setObject(1, ldt);</code>
java.time を利用し、文字列の代わりに日付オブジェクトを MySQL に渡すことにより、書式設定の問題を排除し、日付変換の正確性を確保できます。
以上がUNIX タイムスタンプを日付に変換するときに、SimpleDateFormat.parse の出力が指定されたものと異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。