Scala - 获取给定年份的所有月份和日期

时间:2017-05-29 17:16:49

标签: scala date calendar

我需要创建一个函数,将给定年份的所有日期的序列作为字符串日期三元组(年,月,日)返回。

def allDaysForYear(year: String) = {
 ...// get every month and day for that $year

  }

然后我将以这种方式使用:

for ((year, month, day) <- allDaysForYear("2017"))
        yield doSomethingElse(p(year), p(month), p(day))

在我的尝试中,我使用了Calendar Object和Iterator [Calendar],但没有设法使用干净的小代码。

存档似乎并不复杂,也许有人对如何处理日期有更好的了解。

在Scala中执行此操作的最有效方法是什么?

感谢

2 个答案:

答案 0 :(得分:2)

我能够通过简单的理解以及java.time.LocalDatejava.time.Year完成此操作:

    import java.time.{LocalDate, Year}

    def allDaysForYear(year: String): List[(String, String, String)] = {
      val daysInYear = if(Year.of(year.toInt).isLeap) 366 else 365
      for {
        day <- (1 to daysInYear).toList
        localDate = LocalDate.ofYearDay(year.toInt, day)
        month = localDate.getMonthValue
        dayOfMonth = localDate.getDayOfMonth
      } yield (year, month.toString, dayOfMonth.toString)
    }

答案 1 :(得分:0)

使用Lamma Date

Date(2015, 1, 1) to Date(2015, 12, 131) foreach println 

Date(2015,1,1)
Date(2015,1,2)
Date(2015,1,3)
Date(2015,1,4)