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

时间:2017-11-14 11:26:02

标签: scala date difference date-difference java.util.date

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)值代表什么?

2 个答案:

答案 0 :(得分:1)

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 !

答案 1 :(得分:1)

当你减去两次时的第一个问题,时间可能会变为负数。 其次,getTime以毫秒为单位返回值。

1000ms = 1 second

所以,首先需要将它除以1000才能在几秒钟内获得时间。要在几分钟内完成,再将它除以60。 因为你需要几分钟的结果。

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