我希望以yyyy-MM-dd HH:mm:ss
的格式生成当前时间戳。我已经写了以下代码,但它总是给我这种格式yyyy-MM-dd HH:mm:ss.x
你如何摆脱.x
部分?
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = df.format(new Date());
Timestamp timestamp = Timestamp.valueOf(currentTime);
我需要有一个时间戳类型来写入mysql。
答案 0 :(得分:2)
您可能正在查看String
对象在数据库引擎中的Timestamp
表示形式或其Java表示形式,方法是使用System.out.println
或其他方法在控制台中打印它。请注意,实际存储的内容(在Java端或数据库引擎中)是一个数字,表示自纪元以来的时间(通常是1970年1月1日)以及您希望/需要存储的日期。
不应注意消费 String
时代表的Timestamp
格式。如果您应用相同的SimpleDateFormat
来获取String
对象的timestamp
表示,则可以轻松演示此内容:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = df.format(new Date());
Timestamp timestamp = Timestamp.valueOf(currentTime)
//will print without showing the .x part
String currentTimeFromTimestamp = df.format(currentTime);
无论如何,如果您想要当前时间,只需直接从Timestamp
的结果创建new Date
:
Timestamp timestamp = new Timestamp(new Date().getTime());
答案 1 :(得分:1)
您可以将时间戳作为字符串插入MySQL表。你在currentTime中的String表示就足够了。
答案 2 :(得分:0)
在Java中编写Timestamp或任何数据类型的最佳方法是使用PreparedStatement和适当的方法
PreparedStatement ps = conn.prepareStatement("update t1 set c1=?");
ps.setTimestamp(1, new java.sql.Timestamp(new Date().getTime()));
ps.executeUpdate();