Datetime Iterators
namespace extensions {
using System;
using System.Collections.Generic;
public static class DateTimeExtension {
public static int ToRowNumber(this DateTime datetime) {
int row;
row = (datetime.Day - 1) * 24 + datetime.Hour;
return row;
}
public static IEnumerable<DateTime> IterateHours(this DateTime datetime) {
for (var h = 0; h < 24; h++) {
yield return datetime.AddHours(h);
}
}
public static IEnumerable<DateTime> IterateHoursInMonth(this DateTime datetime) {
var item = datetime;
yield return datetime;
while (item.AddHours(1).Month.Equals(datetime.Month)) {
item = item.AddHours(1);
yield return item;
}
}
public static IEnumerable<DateTime> IterateHoursInMonth(this DateTime datetime, DateTime enddatetime) {
var item = datetime;
yield return datetime;
while (item.AddHours(1).Month.Equals(datetime.Month) && item.AddHours(1) < enddatetime) {
item = item.AddHours(1);
yield return item;
}
}
public static IEnumerable<DateTime> IterateDaysInMonth(this DateTime datetime) {
for (var i = datetime.Day; i <= DateTime.DaysInMonth(datetime.Year, datetime.Month); i++) {
var day = new DateTime(datetime.Year, datetime.Month, i);
yield return day;
}
}
}
}