使用Scala获取给定月份的前12个月和月末日期



我有一个用例,从给定日期开始获取最后12个月的结束日期。

例如,如果输入为("2021-04-23"(,则输出应为:

输出1=('2021-04-30','2021-03-31','2011-02-28','2021:01-31','2020-12-31',''2020-11-30','.2020-09-30',''202 0-08-31','.2020-07-31','9202 0-06-30','0202 0-05-31',2020-04-30'(

输出2=('2021-04-01','2021-03-01',''2021-02-01','.2020-12-01'、''2020-11-01'、'.2020-09-01'、'2020-08-01'、''2020-07-01'、''2020-06-01',''2020-05-01'、'02-04-01'(

我有的代码片段

import java.time.format.DateTimeFormatter
val monthDate = DateTimeFormatter.ofPattern("yyyy-MM")
val start = YearMonth.parse("2021-04", monthDate
val lastTwelveMonths=(0 to 12).map(x => start.minusMonths(x).format(monthDate)).toList

从本月返回最后12个月,请任何人提供包括前12个月结束日期的解决方案。感谢

您可以使用java.time.LocalDatewithDayOfMonth()来满足您的需求:

import java.time.LocalDate
import java.time.format.DateTimeFormatter
val dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd")
val inputDate = LocalDate.parse("2021-04-23")
(0 to 12).map{ n =>
inputDate.minusMonths(n).withDayOfMonth(1).format(dateFormat)
}
// Vector(2021-04-01, 2021-03-01, 2021-02-01, 2021-01-01, 2020-12-01, 2020-11-01, 2020-10-01, 2020-09-01, 2020-08-01, 2020-07-01, 2020-06-01, 2020-05-01, 2020-04-01)
(0 to 12).map{ n => 
val prevDate = inputDate.minusMonths(n)
prevDate.withDayOfMonth(prevDate.lengthOfMonth).format(dateFormat)
}
// Vector(2021-04-30, 2021-03-31, 2021-02-28, 2021-01-31, 2020-12-31, 2020-11-30, 2020-10-31, 2020-09-30, 2020-08-31, 2020-07-31, 2020-06-30, 2020-05-31, 2020-04-30)

最新更新