不要将日期作为字符串传递给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得到的是:
2018-05-23T15:30
我简化了从纪元字符串的转换。使用基本的小写字母
long而不是
Long对象。我使用您的时区Asia /
Calcutta,假设您的数据库值在该时区中。通常的建议是将数据库值保留为UTC,至少在有可能在您所在时区之外使用数据的情况下。如果需要此,请使用此转换,而不是上面的转换:
LocalDateTime ldt = inst.atOffset(ZoneOffset.UTC).toLocalDateTime();
链接: Oracle教程:Date
Time说明如何使用
java.time。



