如何在分钟内找到 scala java.util.Date 差异?

How to find scala java.util.Date difference in minutes?

scala> val dates = filtering1.map(x => (format.parse(x._1),format.parse(x._2)))
dates: org.apache.spark.rdd.RDD[(java.util.Date, java.util.Date)] = MapPartitionsRDD[7] at map at <console>:34

存储值低于

scala> dates.collect
res0: Array[(java.util.Date, java.util.Date)] = Array((Sat Jun 30 23:42:00 IST 2018,Thu Jul 04 15:10:00 IST 2019), (Sat Jun 30 23:37:00 IST 2018,Sun Jul 01 14:44:00 IST 2018), (Sat Jun 30 23:13:00 IST 2018,Sun Feb 28 23:34:00 IST 219), (Sat Jun 30 22:58:00 IST 2018,Mon Jul 01 18:22:00 IST 2019), (Sat Jun 30 22:36:00 IST 2018,Mon Jul 01 16:01:00 IST 2019), (Sat Jun 30 21:53:00 IST 2018,Tue Jul 02 10:36:00 IST 2019), (Sat Jun 30 21:42:00 IST 2018,Sun Jun 30 23:25:00 IST 2019), (Sat Jun 30 21:36:00 IST 2018,Mon Jul 01 16:47:00 IST 2019), (Sat Jun 30 21:16:00 IST 2018,Mon Jul 01 18:18:00 IST 2019), (Sat Jun 30 21:10:00 IST 2018,Thu Jul 04 12:25:00 IST 2019), (Sat Jun 30 21:02:00 IST 2018,Sat Dec 01 17:29:00 IST 2018), (Sat Jun 30 20:54:00 IST 2018,Mon Jul 01 15:51:00 IST 2019), (Sat Jun 30 ...

但是如何执行操作以便将日期的差异组合在一起,以分钟为单位给出值。

我有命令,它没有给我想要的输出,应该进行哪些更改?

val time_diff = dates.map(x => (x._2.getTime()-x._1.getTime())/(60*1000)%60)

(60*1000)%60) 值代表什么?

getTime 得到毫秒,所以除以 1000.0 得到秒,除以 1000.0*60 得到分钟。请注意,将 Long 除以 Int 会得到另一个 Long,因此您会将结果分钟截断为下一个最小整数。添加模数 60,% 60,只是将分钟换回到 0-59,所以如果你有 90 分钟的差异,那就是 1 小时 30 分钟,你的计算结果就是 30.

val t = System.currentTimeMillis
val x = new java.util.Date(t)
val y = new java.util.Date(t + 10000) // ten seconds later
(y.getTime - x.getTime) / (1000.0 * 60) // 0.167
(y.getTime - x.getTime) / (1000   * 60) // 0 !

第一个问题当你减去两次时,时间可能会变成负值。 二、getTimereturns 以毫秒为单位的值。

1000ms = 1 second

所以,首先需要将它除以 1000 得到以秒为单位的时间。要得到分钟,再除以 60。 因为你需要在几分钟内得到结果。

val time_diff = dates.map(x => (x._2.getTime()-x._1.getTime())/(60*1000))