How to print a calendar for a specific month and year in Kotlin

1 Answer

0 votes
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 

*/

 



answered Jan 19 by avibootz

Related questions

...