从Java的时间戳到日期

时间:2014-03-22 08:35:17

标签: java android date timestamp

我在使用Java创建新日期时遇到问题。我从webservice收到一个时间戳(例如1397692800)。您可以在this在线转换器中看到,相当于2014年4月17日。 当我尝试在Java中使用此时间戳创建新日期时

Date date = new Date (1397692800);

控制台对我说,这相当于1970年1月17日星期六05:14:52 CET 1970.我的代码出了什么问题?

2 个答案:

答案 0 :(得分:6)

自{1}}构造函数获取自Unix纪元以来毫秒的数量。我强烈怀疑自Unix时代以来你已经获得了的数量 - 所以只需将该值乘以1000L即可。

Date(long)

确保你使用1000L而不是1000,否则如果Date date = new Date(timestamp * 1000L); timestamp,它将以32位而不是64位执行算术,你很可能会得到错误结果

答案 1 :(得分:1)

java.time

现代方法使用 java.time 类。

Instant instant = Instant.ofEpochSecond( 1_397_692_800L ) ;
  

instant.toString():2014-04-17T00:00:00Z


关于 java.time

java.time框架已内置在Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendarSimpleDateFormat

目前位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解更多信息,请参见Oracle Tutorial。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*类。

在哪里获取java.time类?