Java 从unix时间到日历的转换-存在一个小时的不一致性
我编写此方法是为了将unix时间转换为日历对象:Java 从unix时间到日历的转换-存在一个小时的不一致性,java,datetime,calendar,unix-timestamp,datetime-conversion,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
/**
* 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及以上,我们得到一个小时的差异(我的代码向前一小时)
如果我使用:
日历.setTimeInMillis(unixTime*1000)
我得到了同样的问题,只是与现实相差3-2小时(相同的值)
我使用了一些在线网站来检查自己,我正在寻找GMT 0的结果。
谢谢推荐的方法是检索本地日历实例:
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;
}
服务器在哪里?你们知道什么是夏令时吗?嗨,我读了,我查了一下:System.out.println(TimeZone.getTimeZone(我的区域).inDaylightTime(newdate());它返回false。无论如何,我不确定它是否与DST有关,所以这不仅仅是一个1小时的不一致性?它只是一个1小时的不一致性(对于大于~797000000的值)。为什么你们不这么认为呢?若服务器上的日期设置错误,并因此发生了错误呢?嗨,丽芙,正如我写的,我也尝试过这种方法,但同样的问题也发生了。谢谢