【问题标题】:Formatting timestamp in Java在 Java 中格式化时间戳
【发布时间】:2014-05-16 03:21:27
【问题描述】:
我希望生成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。
【问题讨论】:
标签:
java
format
timestamp
【解决方案1】:
您可能正在查看Timestamp 对象在您的数据库引擎中提供的String 表示形式或其Java 表示形式,方法是使用System.out.println 或其他方法在控制台中打印它。请注意,真正存储的(在 Java 端或数据库引擎中)是一个数字,表示自纪元以来的时间(通常是 1970 年 1 月 1 日)和您想要/需要存储的日期。
您不应该注意在您使用您的Timestamp 时它所代表的String 格式。如果您应用相同的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);
无论如何,如果您想要当前时间,只需直接从new Date 的结果创建Timestamp:
Timestamp timestamp = new Timestamp(new Date().getTime());
【解决方案2】:
您可以将时间戳作为字符串插入 MySQL 表。您在 currentTime 中的字符串表示形式就足够了。
【解决方案3】:
在 Java 中编写 Timestamp 或任何数据类型的最佳方法是使用 PreparedStatement 和适当的方法
PreparedStatement ps = conn.prepareStatement("update t1 set c1=?");
ps.setTimestamp(1, new java.sql.Timestamp(new Date().getTime()));
ps.executeUpdate();