【问题标题】: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();
        

        【讨论】:

          猜你喜欢
          • 2019-02-17
          • 2012-06-24
          • 1970-01-01
          • 2015-02-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多