获取scala中两个日期之间的年/月/天/小时列表



我有以下两个日期,我想要一个scala函数,它返回两个日期之间的月份列表,如2019年12月31日和2020年2月1日。

知道怎么解决这个问题吗?

使用java.time库。

import java.time.LocalDate
import java.time.format.DateTimeFormatter
val start = LocalDate.parse("31-12-2019"
,DateTimeFormatter.ofPattern("dd-MM-yyyy"))
val stop  = LocalDate.parse("01-02-2020"
,DateTimeFormatter.ofPattern("dd-MM-yyyy"))
LazyList.iterate(start)(_.plusMonths(1))
.takeWhile(_.isBefore(stop.plusMonths(1)))
.toList
.map(_.format(DateTimeFormatter.ofPattern("yyyy-MM")))
//res0: List[String] = List(2019-12, 2020-01, 2020-02)

注意,";月份;仅作为.plusMonths()被提及两次。将它们更改为.plusDays().plusYears(),一切都如预期的那样工作。当然,输出演示格式必须根据需要进行调整。

它看起来像这个

import org.joda.time._
@tailrec
def findMonths(dt: DateTime, lastDt: DateTime, months: List[String] = Nil): List[String] = {
val formatter = format.DateTimeFormat.forPattern("MMMM, yyyy")
val nextMonth = dt.plusMonths(1)
if (nextMonth.isBefore(lastDt.getMillis))
findMonths(nextMonth, lastDt, months :+ formatter.print(nextMonth))
else
months
}
val res = findMonths(
DateTime.parse("2019-12-31"), 
DateTime.parse("2020-04-01")
)
println(res) // List("january, 2020", "february, 2020", "march, 2020")

相关内容

  • 没有找到相关文章

最新更新