Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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/sql/75.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_Sql_Postgresql_Jakarta Ee - Fatal编程技术网

如何使用Java获得小时差异

如何使用Java获得小时差异,java,sql,postgresql,jakarta-ee,Java,Sql,Postgresql,Jakarta Ee,我有两次约会,我试图从中提取时间增量- Date1 = "2014-03-22 22:00:00.022023" Date2= "2014-03-26 16:45:04.445531" 以上两个日期都是时间戳,我是从postgresql数据库中获取的。现在我试图提取上述两个日期之间的时间差。所以我有下面的代码- long delta = getDateDiff(queryDate, createdDate, TimeUnit.HOURS); System.out.pr

我有两次约会,我试图从中提取时间增量-

 Date1 = "2014-03-22 22:00:00.022023"
 Date2= "2014-03-26 16:45:04.445531"
以上两个日期都是时间戳,我是从postgresql数据库中获取的。现在我试图提取上述两个日期之间的时间差。所以我有下面的代码-

     long delta =  getDateDiff(queryDate, createdDate, TimeUnit.HOURS);
     System.out.println(delta);

     public static long getDateDiff(Date date1, Date date2, TimeUnit timeUnit) {
     long diffInHour = date2.getTime() - date1.getTime();
     return TimeUnit.convert(diffInHour,TimeUnit.HOURS);
   }
但是增量是-
326704423
,这是错误的,因为它应该是
91小时
。我也有类似的SQL查询,它给了我日期之间的时间差,从中我可以看到91作为返回的答案,所以我肯定是做错了


有人能帮我吗?

将您的函数更新为

public static long getDateDiff(Date date1, Date date2, TimeUnit timeUnit) {
  return (long) ((date2.getTime() - date1.getTime())/3600000);
}
getTime()
返回毫秒数。因此,您需要将毫秒转换为小时

public static long getDateDiff(Date date1, Date date2) {
    long diffInMilliseconds = date2.getTime() - date1.getTime();
    return TimeUnit.MILLISECONDS.toHours(diffInMilliseconds);
}

TimeUnit
怎么知道这个数字是以毫秒为单位的?把它除以3600000.0。谢谢@chrylis,你说得对,它成功了。你能把它作为一个答案贴出来让我接受吗