2

我编写了这个方法来将 unix 时间转换为日历对象:

     /**
 * Converts Unix time to Calendar instance.
 */
public static Calendar unixToCalendar(long unixTime){
    Calendar calendar = new GregorianCalendar(1970/*Year*/, GregorianCalendar.JANUARY/*0*/,       1 /*Day*/, 00, 0);
    calendar.add(Calendar.MINUTE, (int) (unixTime/60/* Sec to Min */));
    return calendar;
}

问题是,对于更大的输入值,我得到的实际时间与结果之间的差异正好是一小时。

差异从 796000000 值之间的某个地方开始......

例如,直到 796000000 我们得到相同的结果(与现实匹配),但对于 797000000 及以上,我们得到一小时的差异(我的代码在一小时前)。

如果我使用:

calendar.setTimeInMillis(unixTime*1000);

与现实相差 3-2 小时(相同的值),我遇到了同样的问题。

我使用了一些在线网站来检查自己,我正在寻找 GMT 0 的结果。 http://www.epochconverter.com/ http://www.onlineconversion.com/unix_time.htm

谢谢

4

1 回答 1

6

推荐的方法是检索 Calendar 的本地实例:

Calendar c = Calendar.getInstance(); 

然后使用 setTimeInMillis() 方法传入 Unix 时间。像这样:

/**
 * Converts Unix time to Calendar instance.
 */
public static Calendar unixToCalendar(long unixTime){
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(unixTime);
    return calendar;
}
于 2013-04-30T13:07:45.880 回答