Java时间戳,无法获得正确的值

时间:2014-11-26 11:53:49

标签: java mysql timestamp unix-timestamp

我想将此1416990366时间戳转换为日期。我是这样做的:

    Timestamp stamp = new Timestamp(1416990366);
    System.out.println("TimeStamp: " + stamp.toString());
    Date mDate = new Date(stamp.getTime());

但我得到Sat Jan 17 13:06:30 GMT+03:30 1970,但必须Wed, 26 Nov 2014 08:26:06 GMT出错了什么?

修改

我从服务器获取此值,我认为它们会缩短毫秒,所以我必须将它乘以1000但我什么都没得到,而且错误的值。 为什么这仍然不起作用Timestamp stamp = new Timestamp(1000 * mIssue.getReleaseTime()); mIssue.getReleaseTime() = 1416990366 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

Timestamp构造函数指定的时间是自1970年1月1日00:00:00 GMT以来的时间(以毫秒为单位)。 1416990366评估从那个时代起大约16天,因此你得到的输出。

如果您想要当前时间,可以将System.currentTimeMillis()传递给构造函数。

修改 由于从服务器获取的时间以毫秒为单位,因此您可以乘以1000并转换为long,如下所示:

Timestamp stamp = new Timestamp((long) 1000 * mIssue.getReleaseTime());

答案 1 :(得分:1)

java.time

现代的方法是使用java.time类。

Instant instant = Instant.ofEpochSecond( 1416990366L );

调用toString生成一个字符串,以标准ISO 8601格式表示其日期时间值。

  

2014-11-26T08:26:06Z

Instant是UTC时间轴上的一个时刻,分辨率为nanoseconds

大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP(见How to use…)。