Jangan berikan tanggal sebagai string ke database MySQL Anda. Lebih baik, lebih mudah dan lebih aman untuk melewatkan objek tanggal. Untuk satu hal, ini membebaskan Anda dari pemformatan dan masalah pemformatan apa pun. Terbaik, lewati instance kelas dari java.time
, API tanggal dan waktu Java modern. Dalam kasus Anda LocalDateTime
akan melakukannya.
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
diperoleh adalah:
Saya sedikit menyederhanakan konversi Anda dari string Epoch. Gunakan huruf kecil long
primitive yang primitif daripada Long
obyek. Saya menggunakan zona waktu Anda, Asia/Kalkuta, dengan asumsi bahwa nilai basis data Anda berada di zona waktu ini. Rekomendasi normal adalah untuk menjaga nilai basis data dalam UTC, setidaknya jika ada kemungkinan data akan digunakan di luar zona waktu Anda. Jika Anda menginginkan ini, gunakan konversi ini alih-alih yang di atas:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
Tautan: Tutorial Oracle:Tanggal Waktu
menjelaskan cara menggunakan java.time
.