Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

foreach day in month [duplicate]

Possible Duplicate:
How do I loop through a date range?

Is there a way to make a foreach loop for each day in a specific month?

thinking of something like

foreach (DateTime date in DateTime.DaysInMonth(2012, 1)) { } 
like image 611
Michael Tot Korsgaard Avatar asked Feb 01 '12 14:02

Michael Tot Korsgaard


2 Answers

You can write a helper method pretty easily:

public static IEnumerable<DateTime> AllDatesInMonth(int year, int month) {     int days = DateTime.DaysInMonth(year, month);     for (int day = 1; day <= days; day++)     {          yield return new DateTime(year, month, day);     } } 

Then call it with:

foreach (DateTime date in AllDatesInMonth(2012, 1)) 

This is probably overkill for something you're only doing once, but it's much nicer than using a for loop or something similar if you're doing this a lot. It makes your code say just what you want to achieve, rather than the mechanics for how you're doing it.

like image 121
Jon Skeet Avatar answered Oct 07 '22 02:10

Jon Skeet


Try using a for loop instead.

for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++) {   DateTime dt = new DateTime(year, month, i); } 
like image 27
Brandon Avatar answered Oct 07 '22 02:10

Brandon