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