Unix 时间戳(timestamp)转换 joda 对象

Unix 时间戳(timestamp)转换 joda 对象的时候如果使用时间戳初始化对象显示的时间对象不对正确。

显示的对象为 1970 年。

2020-10-12 17:12:34.229 DEBUG   --- [           main] com.insight.sco.service.test.UtilTest    : dateTime for EST is - [1970-01-02T15:30:51.635-05:00]

显示的对象是 1970 年的时间对象。

Unix-timestamp-01

原因和解决

产生这个问题的原因是Unix 的时间是使用秒,Java 的时间是使用毫秒。

因此如果在 java joda 中使用时间,需要将 joda 的时间设置为毫秒。

所以正确的转换应该为:

DateTime dateTime = new DateTime(160251635L * 1000L, DateTimeZone.UTC);

需要将上面的时间戳乘以 1000L。