How to find the dates of the last Fridays of each month of a given year in Kotlin

1 Answer

0 votes
import java.time.DayOfWeek
import java.time.LocalDate
import java.time.format.DateTimeFormatter

object LastFridaysOfYearProgram {

    // Return all last Fridays of each month in a given year
    private fun lastFridaysOfYear(year: Int) = sequence {
        for (month in 1..12) {

            // Last day of the month
            var date = LocalDate.of(year, month, 1)
                .plusMonths(1)
                .minusDays(1)

            // Walk backward to Friday
            while (date.dayOfWeek != DayOfWeek.FRIDAY) {
                date = date.minusDays(1)
            }

            yield(date)
        }
    }

    @JvmStatic
    fun main(args: Array<String>) {

        val year: Int =
            if (args.isNotEmpty()) args[0].toInt()
            else 2026

        val fmt = DateTimeFormatter.ofPattern("MM/dd/yyyy")

        for (date in lastFridaysOfYear(year)) {
            println(date.format(fmt))
        }
    }
}



/*
run:

01/30/2026
02/27/2026
03/27/2026
04/24/2026
05/29/2026
06/26/2026
07/31/2026
08/28/2026
09/25/2026
10/30/2026
11/27/2026
12/25/2026

*/

 



answered 4 hours ago by avibootz

Related questions

...