日付を文字列としてMySQLデータベースに渡さないでください。日付オブジェクトを渡す方が簡単で安全です。一つには、それはあなたをフォーマットとフォーマットの問題から解放します。最善の方法は、java.time
からクラスのインスタンスを渡すことです。 、最新のJava日付および時刻API。あなたの場合、LocalDateTime
します。
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);
PreparedStatement ps = myDatabaseConnection.prepareStatement(
"insert into my_table (my_date_time) values (?)");
ps.setObject(1, ldt);
LocalDateTime
得られるのは:
エポック文字列からの変換を少し簡略化しました。プリミティブな小文字のlong
を使用します Long
ではなく 物体。データベースの値がこのタイムゾーンにあると想定して、アジア/カルカッタのタイムゾーンを使用しています。通常の推奨事項は、少なくともデータがタイムゾーン外で使用される可能性がある場合は、データベース値をUTCで保持することです。これが必要な場合は、上記の変換の代わりにこの変換を使用してください:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
リンク: Oracleチュートリアル:日時
java.time
の使用方法を説明する 。