Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从unix时间到日历的转换-存在一个小时的不一致性_Java_Datetime_Calendar_Unix Timestamp_Datetime Conversion - Fatal编程技术网

Java 从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

我编写此方法是为了将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及以上,我们得到一个小时的差异(我的代码向前一小时)

如果我使用:

日历.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的值)。为什么你们不这么认为呢?若服务器上的日期设置错误,并因此发生了错误呢?嗨,丽芙,正如我写的,我也尝试过这种方法,但同样的问题也发生了。谢谢