guneysus
6/7/2016 - 10:18 AM

Datetime Iterators

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;
            }
        }
    }

}