Java:来自unix时间戳的日期
我需要将一个unix时间戳转换为一个日期对象。
我试过这个:
java.util.Date time = new java.util.Date(timeStamp);
时间戳值是: 1280512800
日期应该是“2010/07/30 - 22:30:00”(因为我是通过PHP获得的),但是我得到的是Thu Jan 15 23:11:56 IRST 1970
。
应该怎么做?
对于1280512800
,乘以1000,因为java期望毫秒:
java.util.Date time=new java.util.Date((long)timeStamp*1000);
如果你已经有了毫秒,那么只需要new java.util.Date((long)timeStamp);
从文档:
分配Date对象并初始化它以表示自标准基准时间(即“时代”,即1970年1月1日00:00:00 GMT)起指定的毫秒数。
这是正确的方法:
Date date = new Date ();
date.setTime((long)unix_time*1000);
java.time
Java 8引入了一个用于处理日期和时间的新API:java.time包。
使用java.time可以使用:
Date date = Date.from( Instant.ofEpochSecond( timeStamp ) );
Instant代表Java 8中的时间戳。使用静态Date.from()
方法,您可以将Instant
转换为java.util.Date
实例。