csharp 日期时间迭代器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp 日期时间迭代器相关的知识,希望对你有一定的参考价值。

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

}

以上是关于csharp 日期时间迭代器的主要内容,如果未能解决你的问题,请参考以下文章

csharp 设计模式 - 行为 - 迭代器

csharp C#字典迭代器

csharp 使用迭代器IEnumerable行读取文件&生成数字

由 itertools.groupby() 生成的迭代器被意外消耗

Python3 迭代器与生成器

检测bootstrap-vue日期选择器中v-for中每个元素的目标