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 的时间是使用秒,Java 的时间是使用毫秒。
因此如果在 java joda 中使用时间,需要将 joda 的时间设置为毫秒。
所以正确的转换应该为:
DateTime dateTime = new DateTime(160251635L * 1000L, DateTimeZone.UTC);
需要将上面的时间戳乘以 1000L。