首页 > 解决方案 > 获取scala中两个日期之间的年/月/日/小时列表

问题描述

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

知道如何解决这个问题吗?

标签: listscaladate

解决方案


使用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()or .plusYears(),这一切都按预期工作。当然,必须根据需要调整输出呈现格式。


推荐阅读