Nie przekazuj dat jako ciągów do bazy danych MySQL. Lepiej, zarówno łatwiej, jak i bezpieczniej przekazywać przedmioty randkowe. Po pierwsze, zwalnia Cię z formatowania i wszelkich problemów z formatowaniem. Najlepiej, przekaż instancje klasy z java.time
, nowoczesny interfejs API daty i czasu Java. W Twoim przypadku LocalDateTime
zrobi.
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
uzyskano:
Uprościłem nieco konwersję z ciągu epoki. Użyj prymitywnego long
zamiast Long
obiekt. Używam Twojej strefy czasowej, Azji/Kalkuty, zakładając, że wartości Twojej bazy danych są w tej strefie czasowej. Normalne zalecenia to utrzymywanie wartości bazy danych w UTC, przynajmniej jeśli istnieje jakakolwiek możliwość, że dane będą kiedykolwiek używane poza Twoją strefą czasową. Jeśli chcesz, użyj tej konwersji zamiast powyższej:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
Link: Samouczek Oracle:data i godzina
wyjaśnienie, jak używać java.time
.