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
谢谢
建议的方法是检索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)