【问题标题】:MySQL timestamp to Java date conversionMySQL时间戳到Java日期转换
【发布时间】:2011-03-29 06:07:35
【问题描述】:

如何将 unix 时间戳中的时间转换为正常时间?

【问题讨论】:

  • 您的问题含糊不清。您不只是说“如何将(毫秒)秒的时间戳转换为人类可读的 HH:mm:ss 时间格式”吗? UTC 是一个时区,GMT 也是。
  • @BalusC 不正确的 GMT 始终是 GMT,英国夏令时是 BST,即 GMT+1,GMT 与 UTC 的差异不超过可忽略不计的几分之一秒,与日常使用无关。
  • @MrXexxed:为此我编辑了 DST 部分。
  • @BalusC 谢谢,现在看起来好多了!但是您的观点是正确的,问题标题 具有误导性,因为就本 UTC 和 GMT 而言是一回事。
  • 标题说mysql时间戳,问题问unix时间戳。

标签: java mysql jdbc


【解决方案1】:

您的问题含糊不清。我将消除时区的歧义。

如何将 unix 时间戳中的时间转换为正常时间?

我怀疑您以某种方式从数据库中获取了longString 值,而不是Date。在 JDBC 中,您通常希望使用适当的方法来获取特定于 DB 的数据类型。 MySQL TIMESTAMP 数据类型可以通过ResultSet#getTimestamp() 获得,它为您提供java.sql.Timestamp,而java.util.Date 又是java.util.Date 的子类。

简而言之,应该做到以下几点:

Date date = resultSet.getTimestamp("columnname");

要在将其呈现给最终用户时进一步将其格式化为人类可读的格式,请使用SimpleDateFormat。单击链接,它包含所有模式的概述。这是一个例子:

String dateString = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);

反之亦然,分别使用SimpleDateFormat#parse()PreparedStatement#setTimestamp()

【讨论】:

    【解决方案2】:

    Unix 时间戳是“纪元”以来的秒数。 Java 的 currentTimeMillis 是自“纪元”以来的毫秒数。你可以像这样通过简单的乘法得到一个 Java Date 对象:

     Date dateFromUnixTime = new Date( 1000l * unixTime) ;
    

    从那里,您可以使用 Java 中的普通日期格式化工具对其进行格式化。

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 2014-05-16
      相关资源
      最近更新 更多