【发布时间】:2017-06-12 16:53:15
【问题描述】:
我需要获取一个集合,该集合应在某些输入和LocalDatetime.now 之间填充日期时间间隔。
例子:
如果我要建立一个基于每 30 分钟的间隔,它应该类似于 2017-06-12 00:30, 2017-06-12 01:00, 2017-06-12 01:30, 2017-06-12 02:00..and go on。
我已经编写了一个符合我要求的代码,但它看起来像使用 Scala 语法的 Java - 不是一种功能性和更简洁的方式。
val now = LocalDateTime.now
val dates = if (interval.toInt > 0) {
var tempDate = LocalDate.now.atStartOfDay()
val allDates = scala.collection.mutable.ListBuffer[String]()
while (tempDate.isBefore(now)) {
allDates += tempDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))
tempDate = tempDate.plusMinutes(interval.toInt)
}
allDates
} else {
var initialDay = LocalDate.now.minusDays(30)
val allDates = scala.collection.mutable.ListBuffer[String]()
while (initialDay.isBefore(LocalDate.now)) {
allDates += initialDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
initialDay = initialDay.plusDays(1)
}
allDates
}
如何重构此代码以使其看起来像函数式样式或至少删除该可变变量?
【问题讨论】:
标签: scala functional-programming