easy way to loop over months and years from a given date

前端 未结 6 1453
星月不相逢
星月不相逢 2020-12-20 11:53

I have been trying to write this loop and it just keeps getting more complicated. Basically I want to take a given date and loop through every month until I reach the curren

6条回答
  •  渐次进展
    2020-12-20 12:18

    Generate a range (as IEnumerable`DateTime) of first days of a month in between of a given dates:

    from range in new[] {
        new {
            start = new DateTime(2017, 6, 23),
            end = new DateTime(2018, 09, 11)
        }
    }
    select (
        from y in Enumerable.Range(
            range.start.Year, range.end.Year - 
            range.start.Year + 1
        )
        let ms = y == range.start.Year ? range.start.Month : 1
        let me = y == range.end.Year ? range.end.Month : 12
        select 
            from m in Enumerable.Range(ms, me - ms + 1)
            select new DateTime(y, m, 1)
    ).SelectMany(y => y)
    

提交回复
热议问题