【发布时间】:2018-05-23 18:11:50
【问题描述】:
我需要获取 UNIX 时间戳(字符串),将其转换为特定格式的日期,并将其存储在 MySQL 数据库中的 DATETIME 列中。
这是我的一段代码(简化):
String ep ="a1527069600";
Long epoch = Long.parseLong(ep.substring(1, ep.length()));
Date dt = new Date(epoch*1000L);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");
a");
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));
System.out.println("SDF.Format - "+sdf.format(dt));
System.out.println("SDF.parse - "+sdf.parse(sdf.format(dt)));
控制台输出:
SDF.Format - 23/05/2018 03:30:00 PM <br>
SDF.parse - Wed May 23 15:30:00 IST 2018
当我尝试将这个值推送到 MySQL 数据库中时,它会抛出 Invalid DateError。
只是对为什么sdf.format 和sdf.parse 以不同格式显示时间戳感到困惑。
【问题讨论】:
-
你的 MySQL 列的数据类型是什么?询问是因为您可能可以推送
LocalDateTime或Instant对象,而根本不用担心格式。无论如何,我建议您避免使用SimpleDateFormat课程。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 中做得更好。 -
Mysql 列类型 DATETIME,感谢有关最新日期时间 API 的建议,我想我应该简单地摆脱 sdf 类。我将尝试利用新的 API - Abhijeet