我需要将unix时间戳转换为日期对象。 我试了一下:
java.util.Date time = new java.util.Date(timeStamp);
时间戳值:1280512800
日期应该是“2010/07/30 - 22:30:00”(因为我通过PHP得到它),但我得到的是Thu 1月15日23:11:56 IRST 1970。
应该怎么做呢?
我需要将unix时间戳转换为日期对象。 我试了一下:
java.util.Date time = new java.util.Date(timeStamp);
时间戳值:1280512800
日期应该是“2010/07/30 - 22:30:00”(因为我通过PHP得到它),但我得到的是Thu 1月15日23:11:56 IRST 1970。
应该怎么做呢?
当前回答
Date d = new Date(i * 1000 + TimeZone.getDefault().getRawOffset());
其他回答
LocalDateTime是另一个选择,比如:
LocalDateTime.ofInstant(Instant.ofEpochSecond(unixtime), ZoneId.systemDefault())
Date d = new Date(i * 1000 + TimeZone.getDefault().getRawOffset());
对于1280512800,乘以1000,因为java期望的是毫秒:
java.util.Date time=new java.util.Date((long)timeStamp*1000);
如果你已经有了毫秒,那么只需新建java.util.Date((long)timeStamp);
从文档中可以看到:
分配一个Date对象和 对象初始化它以表示 指定的毫秒数 标准基准时间称为“时” epoch”,即1970年1月1日, 就是格林尼治时间。
kotlin的
fun unixToDate(timeStamp: Long) : String? {
val time = java.util.Date(timeStamp as Long * 1000)
val sdf = SimpleDateFormat("yyyy-MM-dd")
return sdf.format(time)
}
Date的构造函数期望timeStamp值以毫秒为单位。 将时间戳的值与1000相乘,然后将其传递给构造函数。