Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 获取scala中两个日期之间的年/月/日/小时列表_List_Scala_Date - Fatal编程技术网

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

List 获取scala中两个日期之间的年/月/日/小时列表,list,scala,date,List,Scala,Date,我有以下两个日期,我想要一个scala函数,它返回两个日期之间的月份列表,如2019年12月31日和2020年2月1日 你知道如何解决这个问题吗?它可能是这样的 import org.joda.time._ @tailrec def findMonths(dt: DateTime, lastDt: DateTime, months: List[String] = Nil): List[String] = { val formatter = format.DateTimeFormat.for

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

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

它可能是这样的

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")

使用
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()
,所有这些都可以按预期工作。当然,输出演示文稿格式必须根据需要进行调整。

想要的输出是什么?你尝试过什么?你想要什么样的输出?