MySQL时间戳转换为Java日期

6
如何将Unix时间戳转换为普通时间?

1
你的问题模糊且含糊不清。难道你的意思不就是“如何将时间戳(毫秒)转换为可读的时间格式,例如HH:mm:ss”吗?UTC是一个时区,就像GMT一样。 - BalusC
@BalusC,那是不正确的。GMT始终是GMT,英国夏令时是BST,即GMT+1。GMT与UTC之间的差异不超过可忽略的几分之一秒,这在日常使用中并不重要。 - delete me
@MrXexxed:为了简单起见,我删除了DST部分。 - BalusC
@BalusC 谢谢,现在看起来更好了!但你的观点是正确的,这个问题的标题确实具有误导性,因为对于这个问题而言,UTC和GMT是相同的。 - delete me
标题说的是MySQL时间戳,问题问的是Unix时间戳。 - Pramod Setlur
2个回答

22

您的问题不太清晰。我将忽略时区的不确定性。

如何将Unix时间戳转换为正常时间?

我怀疑您从数据库中获取了一个long或者String值,而不是一个Date。在JDBC中,您通常需要使用适当的方法来获取特定于数据库的数据类型。MySQL的TIMESTAMP数据类型可以通过ResultSet#getTimestamp()获得,它会给您一个java.sql.Timestamp,它又是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()

3

Unix 时间戳是自“纪元”以来的秒数。Java 的 currentTimeMillis 是自“纪元”以来的毫秒数。您可以通过简单的乘法获得 Java Date 对象,例如:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接