从unix时间转换为Calendar - 有一个小时的不一致

use*_*692 2 java datetime calendar unix-timestamp datetime-conversion

我已经编写了这个方法来将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;
}
Run Code Online (Sandbox Code Playgroud)

问题是,对于更大的输入值,我会在实时到结果之间得到恰好一小时的差异.

差异从796000000值之间开始......

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

如果我使用:

calendar.setTimeInMillis(unixTime*1000);

我从现实中得到了同样的问题,只有3-2小时的差异(相同的值).

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

谢谢

Liv*_*Liv 6

建议的方法是检索Calendar的本地实例:

Calendar c = Calendar.getInstance(); 
Run Code Online (Sandbox Code Playgroud)

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

/**
 * Converts Unix time to Calendar instance.
 */
public static Calendar unixToCalendar(long unixTime){
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(unixTime);
    return calendar;
}
Run Code Online (Sandbox Code Playgroud)