Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/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 ISO时间(8601)的意外输出_Java_Date_Iso8601 - Fatal编程技术网

Java ISO时间(8601)的意外输出

Java ISO时间(8601)的意外输出,java,date,iso8601,Java,Date,Iso8601,系统打印结果为(15705表示自1970年代以来的天数): 12/12/31 22:06:47调试统计时间测试:当前日期:周一至十二月三十一日 2012年夏令时22:06:47,时间间隔:50807153,小时数:14 您可以看到当前的小时数为21小时,但结果显示为14小时。Mon Dec 31 22:06:47 CST 2012是GMT时间的Mon Dec 31 14:06:47 2012,它是用于纪元开始的时区 换句话说,now.getTime()返回自1970年1月1日00:00:00 G

系统打印结果为(15705表示自1970年代以来的天数):

12/12/31 22:06:47调试统计时间测试:当前日期:周一至十二月三十一日 2012年夏令时22:06:47,时间间隔:50807153,小时数:14


您可以看到当前的小时数为21小时,但结果显示为14小时。

Mon Dec 31 22:06:47 CST 2012
是GMT时间的
Mon Dec 31 14:06:47 2012
,它是用于纪元开始的时区


换句话说,
now.getTime()
返回自1970年1月1日00:00:00 GMT以来使用不同时区的毫秒数。

Mon-Dec 31 22:06:47 CST 2012
Mon-Dec 31 14:06:47 2012
在GMT时间,这是用于纪元开始的时区

换句话说,
now.getTime()
返回自1970年1月1日00:00:00 GMT和您使用不同时区以来的毫秒数。

now.getTime()将以UTC毫秒为单位获取值,即GMT+0。 您显示的日志打印可能使用了系统时区,当时是22:06:47,可能不在英格兰附近:-)

另外,请使用date arithmatic类,因为它与您的代码不同,它会考虑闰年、闰秒和时区变化(这在UTC中不会发生,在任何其他区域中可能会出现mihg Thapen)

现在。getTime()将以UTC毫秒为单位获取值,即GMT+0。 您显示的日志打印可能使用了系统时区,当时是22:06:47,可能不在英格兰附近:-)


此外,请使用date arithmatic类,因为它与您的代码不同,它会考虑闰年、闰秒和时区变化(UTC中不会发生这种情况,其他任何区域可能会出现这种情况)

几乎肯定是时区问题。
date
类的许多方法都不推荐使用,因此,请改用
Calendar
gregorianalendar
。您不会遇到这个问题,因为它们是基于地区的。几乎可以肯定是时区问题。
Date
类的许多方法都不推荐使用,因此请改用
Calendar
gregorianalendar
。你不会有这个问题,因为它们是基于地区的。谢谢你的帮助,确实是时区问题,我在中国,时区差大约8小时。谢谢你的帮助,确实是时区问题,我在中国,时区差大约8小时。
Date now = new Date();
long timeInterval = now.getTime() - (15705 * 24 * 60 * 60 * 1000L);
long hours = timeInterval / (60 * 60 * 1000L);
LOG.debug(String.format("current date:%s, timeInterval:%d,hours:%d",now.toString(),timeInterval, hours));