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中从日期()获取小时数_Java_Date - Fatal编程技术网

在java中从日期()获取小时数

在java中从日期()获取小时数,java,date,Java,Date,为了进行比较,我需要将它们更新()。我有两个约会,我需要找出它们在时间上的差别 Date date1 = new Date(); Date date2 = new Date(); System.out.println(date1.getHours()-date2.getHours()); 我知道这不是正确的代码, 但是需要类似的东西获取秒差,然后将秒转换为小时 var startDate = new Date(); var endDate = new Date(); var seconds =

为了进行比较,我需要将它们更新()。我有两个约会,我需要找出它们在时间上的差别

Date date1 = new Date();
Date date2 = new Date();
System.out.println(date1.getHours()-date2.getHours());
我知道这不是正确的代码,
但是需要类似的东西

获取秒差,然后将秒转换为小时

var startDate = new Date();
var endDate = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;
// 3.557 seconds difference between the two times
var hourDiff = seconds / 60 / 60;
// 0.0009880555555555556 hours..
包装成函数:

function getHourDiff(date1, date2) {
    var seconds = (date1.getTime() - date2.getTime()) / 1000;
    return seconds / 60 / 60;
}

对日期/时间值的数学操作是无知的,而且可能是你能做的最糟糕的事情。围绕日期/时间操作有很多规则,最好留给一个像样的、经过良好测试的API

从Java8开始,您应该使用
Java.time
API或早期版本的后端口

例如

Instant now = Instant.now();
Instant then = now.minus(2, ChronoUnit.DAYS);

System.out.println(Duration.between(then, now).toHours());

它打印
48

您应该使用
java.time
API,而
Date
实际上是不受欢迎的,对时间的“数学”操作是您能做的最糟糕的事情-如果这些时间跨越夏令时边界会发生什么?类似于
Duration.between(fromdate,todate.toHours()
,其中
fromdate
todate
Instant
会更好。现在,非常麻烦的旧日期时间类,如和
java.text.SimpleDateFormat
,被java 8和更高版本中内置的类所取代。请参见.FYI,像、
java.text.SimpleDateFormat
这样非常麻烦的旧日期时间类现在被内置在Java8和更高版本中的类所取代。看见