3

我对涉及时区的 unix 时间戳转换为 java.util.Date 有点困惑。

我有一个 unix 时间戳,即"1367832568". 这是一个 UTC 日期(2013 年 5 月 6 日星期一 17:29:28 GMT+00:00)。当我执行以下操作时:

Date d = new Date(1367832568 * 1000);

它给了我Mon May 06 17:29:28 GMT+08:00 2013这是不正确的。它应该给我:

Mon May 07 01:29:28 GMT+08:00 2013

因为 unix 时间戳实际上是 UTC 日期。所以这很令人困惑。我应该怎么做才能将 UTC unix 时间戳正确转换为 UTC Date 对象。

4

1 回答 1

5

我不确定你是如何格式化你的日期对象的,但是通过将时区设置为 dateformat 对象(到格林威治标准时间)我能够得到

2013 年 5 月 6 日星期一 09:29:28 GMT

这是您正在寻找的同一日期。

    long time = 1367832568 * (long) 1000;
    Date date = new Date(time);
    SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy a");
    format.setTimeZone(TimeZone.getTimeZone("GMT"));
    Log.d("date", format.format(date));
于 2013-06-09T09:32:43.653 回答