我需要创建一个函数,将给定年份的所有日期的序列作为字符串日期三元组(年,月,日)返回。
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中执行此操作的最有效方法是什么?
感谢
答案 0 :(得分:2)
我能够通过简单的理解以及java.time.LocalDate
和java.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)
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)