我想将此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
有人可以帮忙吗?
答案 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类。
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…)。