在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和更高版本中的类所取代。看见