Home
Insert
Update snippet 'Generate a date range sequence'
Title
Passcode
Description
Generates a sequence of dates (ascending or descending), incrementing (or decrementing) by one day at a time, inclusive of the start and end dates.
Source code
let dateRange (startDate : System.DateTime) (endDate : System.DateTime) = let start = startDate.Date let finish = endDate.Date if start = finish then Seq.singleton start else let shouldContinue = if start < finish then fun d -> d <= finish else fun d -> d >= finish let moveNext = if start < finish then fun (d : System.DateTime) -> d.AddDays(1.0) else fun (d : System.DateTime) -> d.AddDays(-1.0) let rec getNext (nextDate : System.DateTime) = seq { if shouldContinue nextDate then yield nextDate yield! getNext (nextDate |> moveNext) } getNext start
Tags
seqences
seq
datetime
dates
seqences
seq
datetime
dates
Author
Link
Reference NuGet packages
If your snippet has external dependencies, enter the names of NuGet packages to reference, separated by a comma (
#r
directives are not required).
Update