I have a calendarView, here's my code
binding.calendarView.setOnDateChangeListener(CalendarView.OnDateChangeListener { view, year, month, dayOfMonth ->
Toast.makeText(applicationContext, "$dayOfMonth/$month/$year", Toast.LENGTH_LONG).show()
var selectedDate = LocalDateTime.of(year, month, dayOfMonth, 0, 0)
val weekdayValue = selectedDate.dayOfWeek.value
val weekdayName = selectedDate.dayOfWeek.name
})
When I tap on Monday, weekdayValue
= 5 and weekdayName
= "Friday".
When I tap on Wednesday, weekdayValue
= 7 and weekdayName
= "Sunday".
The first day of week in my calendarView is 2, so Monday. The Toast show me the good values.
What is the problem ?
CalendarView unfortunately uses 0-based months (January is 0) and LocalDateTime uses 1-based months (January is 1). You need to use LocalDateTime.of(year, month + 1, dayOfMonth, 0, 0)
.