我有一个包含元组中数据的List:(fileName,creationDate),可以在下面看到。
latestFiles: List[(java.io.File, String)] = List(
(222651.log,2017-12-13),
(222301.log,2017-12-11),
(222305.log,2017-12-13),
(222303.log,2017-12-12),
(222302.log,2017-12-13),
元组中的第二个元素表示文件的创建日期(第一个元素)。 我使用下面的代码以List的第二个元素的形式得到了日期。
val simpDate = new java.text.SimpleDateFormat("yyyy-MM-dd")
val currDate = simpDate.format(new java.util.Date())
val now = Instant.now // Gets current date in the format: 2017-12-13T09:40:29.920Z
val today = now.toEpochMilli
val t = (x:Long) => { new SimpleDateFormat("yyyy-MM-dd").format(x)}
val todaySimpDate = t(today) // Gets the date in the format: 2017-12-13
我需要通过List中的所有元素:latestFiles并获取具有'todaySimpDate'日期的元组。 我知道有'过滤器'和SubList选项可以做到这一点,但我无法想出正确的方法。我尝试了以下方式:
val latefil = latestFiles.filter(y => (y._1,y._2==todaySimpDate))
<console>:64: error: type mismatch;
found : (java.io.File, Boolean)
required: Boolean
val latefil = latestFiles.filter(y => (y._1,y._2==todaySimpDate))
我没有硬编码日期值,因为我将系统日期变为变量,然后使用它来比较值。 我知道我这样做的方式不对,但任何人都可以告诉我如何正确地从List中获取元素:包含元组中第二个元素的latestFiles到“todaySimpDate”中的值。
答案 0 :(得分:2)
你的过滤器表达式需要返回一个bool,而不是一个元组
例如:
latestFiles.filter(y => y._2==todaySimpDate)
或:
latestFiles.filter(_._2 == todaySimpDate)