How to create a sequence of dates between a start and end date in Swift

1 Answer

0 votes
import Foundation

func dateRange(from start: Date, to end: Date) -> AnySequence<Date> {
    let calendar = Calendar.current

    return AnySequence<Date> {
        var current = start
        return AnyIterator<Date> {
            guard current <= end else { return nil }
            let result = current
            current = calendar.date(byAdding: .day, value: 1, to: current)!
            return result
        }
    }
}

let calendar = Calendar.current
let start = calendar.date(from: DateComponents(year: 2026, month: 1, day: 3))!
let end   = calendar.date(from: DateComponents(year: 2026, month: 1, day: 12))!

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"

let dates = Array(dateRange(from: start, to: end))

print("Generated \(dates.count) dates:")
dates.forEach { print(formatter.string(from: $0)) }




/*
run:

Generated 10 dates:
2026-01-03
2026-01-04
2026-01-05
2026-01-06
2026-01-07
2026-01-08
2026-01-09
2026-01-10
2026-01-11
2026-01-12

*/

 



answered Jan 31 by avibootz
...