安卓如何将Unix时间转换为UTC日期

3

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

我有一个Unix时间戳,它是"1367832568"。这是一个UTC日期(Mon May 06 17:29:28 GMT+00:00 2013)。当我执行以下操作时:

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日期对象?


2
尝试将日期参数转换为长整型:Date d = new Date(((long)1367832568 * (long)1000)); - Blackbelt
1个回答

5
我不确定你如何格式化你的日期对象,但是通过将时区设置为日期格式对象(到GMT),我能够获得

2013年5月6日上午9: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));

我不需要字符串,而是希望获取具有GMT日期的日期对象。你正在使用格式化程序将本地GMT日期对象输出为GMT字符串,但我需要GMT日期对象。在你的代码中第二行应该给出GMT日期对象,这就是我所需要的。 - g.revolution
另外,您打印的日期不正确。我认为这是由于您所在的时区而发生了变化。正确的输出应该是2013年5月6日星期一17:29:28 GMT+00:00。 - g.revolution
你不能在Date对象中设置语言环境,请使用Calendar代替。同时,根据http://www.epochconverter.com/,时间是正确的。 - Mr.Me

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接