Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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 减去毫秒不会';我不能给出预期的结果_Java_Date_Datetime_Grails_Groovy - Fatal编程技术网

Java 减去毫秒不会';我不能给出预期的结果

Java 减去毫秒不会';我不能给出预期的结果,java,date,datetime,grails,groovy,Java,Date,Datetime,Grails,Groovy,(day2.getTime()-day1.getTime())=7199996 这里似乎有些问题,因为当我将毫秒转换为小时时,7199996并不完全是2小时(7200000)。事实上,它是4毫秒少。为什么不是7200000毫秒 您没有清除毫秒字段 加 在cal.set(…)之前行,或添加 cal.clear(); 更一般地说,不要使用java.util.Calendar和java.util.Date:它们是旧的、设计糟糕的类,充满了众所周知的bug 使用Java8中引入的java.time包

(day2.getTime()-day1.getTime())=7199996


这里似乎有些问题,因为当我将毫秒转换为小时时,7199996并不完全是2小时(7200000)。事实上,它是4毫秒少。为什么不是7200000毫秒

您没有清除毫秒字段

cal.set(…)之前行,或添加

cal.clear();

更一般地说,不要使用
java.util.Calendar
java.util.Date
:它们是旧的、设计糟糕的类,充满了众所周知的bug


使用Java8中引入的
java.time
包中的类;或Java早期版本中的类或JodaTime。

您没有清除毫秒字段

cal.set(…)之前行,或添加

cal.clear();

更一般地说,不要使用
java.util.Calendar
java.util.Date
:它们是旧的、设计糟糕的类,充满了众所周知的bug


使用Java8中引入的
java.time
包中的类;或者Java早期版本中的类或JodaTime。

以下是Three Ten Backport版本,它将在Java 6上工作,作为对公认答案的支持和适度补充

cal.set(Calendar.MILLISECONDS, 0);
它打印:

(dateTime2-dateTime1)=7200000

很抱歉,我没有运行Groovy/Grails环境,所以我只提供了Java代码,并且必须相信您能够进行翻译


你的问题只是关于过时的类的又一个例子,比如
Calendar
,它展示了你是多么容易从这些类中得到意想不到的结果,以及当这种情况发生时,你通常只剩下很少的线索。在您的例子中,获取Java 6的Three-Ten Backport当然值得考虑。此外,上面的代码也更短,而且在我看来,更清晰、更自然。

为了支持公认的答案,并作为对公认答案的适度补充,下面是Three Ten Backport版本,它将在Java 6上工作

cal.set(Calendar.MILLISECONDS, 0);
它打印:

(dateTime2-dateTime1)=7200000

很抱歉,我没有运行Groovy/Grails环境,所以我只提供了Java代码,并且必须相信您能够进行翻译


你的问题只是关于过时的类的又一个例子,比如
Calendar
,它展示了你是多么容易从这些类中得到意想不到的结果,以及当这种情况发生时,你通常只剩下很少的线索。在您的例子中,获取Java 6的Three-Ten Backport当然值得考虑。此外,上面的代码也更短,在我看来,更清晰、更自然。

谢谢。但我必须使用java 6,我们的低端服务器“或者在早期版本上使用threetenbp或JodaTime的类。”谢谢。但我必须使用java 6,我们的低端服务器“或早期版本上threetenbp或JodaTime的类。”Thx,@Userthatisnotauser,用于改进。Thx,@Userthatisnotauser,用于改进。