Không chuyển ngày dưới dạng chuỗi vào cơ sở dữ liệu MySQL của bạn. Tốt hơn là chuyển các đối tượng ngày tháng vừa dễ dàng hơn vừa an toàn hơn. Đối với một điều, nó giúp bạn giải quyết vấn đề định dạng và mọi vấn đề về định dạng. Tốt nhất, hãy chuyển các phiên bản của một lớp từ java.time
, API ngày và giờ của Java hiện đại. Trong trường hợp của bạn, một LocalDateTime
sẽ làm.
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
thu được là:
Tôi đã đơn giản hóa chuyển đổi của bạn từ chuỗi kỷ nguyên một chút. Sử dụng long
nguyên thủy, viết thường chứ không phải là Long
sự vật. Tôi đang sử dụng múi giờ của bạn, Châu Á / Calcutta, giả sử rằng các giá trị cơ sở dữ liệu của bạn nằm trong múi giờ này. Các khuyến nghị thông thường là giữ các giá trị cơ sở dữ liệu theo giờ UTC, ít nhất là nếu có bất kỳ khả năng dữ liệu nào sẽ được sử dụng bên ngoài múi giờ của bạn. Nếu bạn muốn điều này, hãy sử dụng chuyển đổi này thay vì chuyển đổi ở trên:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
Liên kết: Hướng dẫn Oracle:Ngày giờ
giải thích cách sử dụng java.time
.