import java.time.DayOfWeek
import java.time.LocalDate
import java.time.YearMonth
import java.time.format.TextStyle
import java.util.Locale
fun printMonth(year: Int, month: Int) {
val ym = YearMonth.of(year, month)
val first = ym.atDay(1)
val daysInMonth = ym.lengthOfMonth()
val monthName = ym.month.getDisplayName(TextStyle.FULL, Locale.getDefault())
println(" $monthName $year")
println("Su Mo Tu We Th Fr Sa")
// DayOfWeek: Monday=1 ... Sunday=7
val offset = first.dayOfWeek.value % 7 // convert Sunday → 0
repeat(offset) { print(" ") }
for (day in 1..daysInMonth) {
print("%2d ".format(day))
if ((offset + day) % 7 == 0) println()
}
println()
}
fun main() {
printMonth(2026, 1)
}
/*
run:
January 2026
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
*/