习惯地获取给定月份的第一天



我有一个compose视图,它给出了月份和年份。我想用惯用的Kotlin方法找到给定月份/年份组合的第一个工作日。这就是我目前所拥有的:

fun CalendarMonthView(
month: Month = LocalDate.now().month,
year: Int = LocalDate.now().year
) {
// ...
val weekDayNames = DateFormatSymbols.getInstance().weekdays
val firstWeekdayOfMonth = //type annotation in IntelliJ: (Calendar .. Calendar?)
Calendar.getInstance().also {
it.set(Calendar.DATE, 1)
it.set(Calendar.MONTH, month.value)
it.set(Calendar.YEAR, year)
it.set(Calendar.DAY_OF_MONTH, 1)
// does not evaluate to a string?
weekDayNames[it.get(Calendar.DAY_OF_WEEK)]
}
// ...
}

有没有一种惯用的方法来代替

val cal = Calendar.getInstance()
cal.set(Calendar.DATE, 1)
cal.set(Calendar.MONTH, month.value)
cal.set(Calendar.YEAR, year)
cal.set(Calendar.DAY_OF_MONTH, 1)
val firstDay = weekDayNames[cal.get(Calendar.DAY_OF_WEEK)] // type annotation: String

您可以执行以下操作:

val month = LocalDate.now().month
val year = LocalDate.now().year
val dayOfWeek = LocalDate.of(year, month, 1).dayOfWeek
println(dayOfWeek.name) // prints "FRIDAY" for April 2022

自己试试

最新更新