kotlin 编写函数判断节假日。节假日信息 获取
- 先判断是否是节日休息
- 再判断是否周六周日,且不是调休,才算做休息日
- 剩余的都是工作日
holiday
data class Holiday(
// 节日名称
val name: String,
// 节日休息范围
val dateRange: ClosedRange<LocalDate>,
)
fun holidays(date: LocalDate): Boolean {
val holidays = listOf(
Holiday("New Year's Day", LocalDate.of(2023, 12, 30)..LocalDate.of(2024, 1, 1)),
Holiday("Spring Festival", LocalDate.of(2024, 2, 10)..LocalDate.of(2024, 2, 17)),
Holiday("Tomb Sweeping Day", LocalDate.of(2024, 4, 4)..LocalDate.of(2024, 4, 6)),
Holiday("labour day", LocalDate.of(2024, 5, 1)..LocalDate.of(2024, 5, 5)),
Holiday("the Dragon Boat Festival", LocalDate.of(2024, 6, 8)..LocalDate.of(2024, 6, 10)),
Holiday("Mid-Autumn Festival", LocalDate.of(2024, 9, 15)..LocalDate.of(2024, 9, 17)),
Holiday("National Day", LocalDate.of(2024, 10, 1)..LocalDate.of(2024, 10, 7)),
)
// 调休工作日
val workingDays = listOf<LocalDate>(
LocalDate.of(2024, 2, 4),
LocalDate.of(2024, 2, 18),
LocalDate.of(2024, 4, 7),
LocalDate.of(2024, 4, 28),
LocalDate.of(2024, 5, 11),
LocalDate.of(2024, 9, 14),
LocalDate.of(2024, 9, 29),
LocalDate.of(2024, 10, 12),
)
for (holiday in holidays) {
if (holiday.dateRange.contains(date)) {
println("$date is ${holiday.name}")
return true
}
}
// saturdays and sundays are not working days
if ((date.dayOfWeek == DayOfWeek.SATURDAY || date.dayOfWeek == DayOfWeek.SUNDAY) && !workingDays.contains(date)) {
println("$date is a official holiday")
return true
}
println("$date is a working day")
return false
}