Java:来自 unix 时间戳的日期java.time

2022-08-31 05:28:14

我需要将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

应该如何做?


答案 1

对于 ,乘以 1000,因为 java 期望毫秒:1280512800

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)以来的指定毫秒数。


答案 2

java.time

Java 8 引入了一个用于处理日期和时间的新 API:java.time 包

使用java.time,您可以解析自UTC,1970-01-01T00:00Z中1970年第一个时刻的纪元参考以来的整个秒数。结果是即时

Instant instant = Instant.ofEpochSecond( timeStamp );

如果您需要与尚未针对 java.time 更新的旧代码进行互操作,请转换。调用添加到旧类的新转换方法。java.util.Date

Date date = Date.from( instant );