查询日历日的计算

本文关键字:计算 日历 查询 | 更新日期: 2023-09-27 18:14:43

我们是否可以使用日历规则,同时在公历中获得一年中的一天,就像我们在一年中的一周一样- GetWeekInYear(DateTime日期,日历规则,DayOfweek firstDayOfWeek) ?

查询日历日的计算

使用GregorianCalendar.GetDayOfYear(DateTime time)

我不知道有什么不同文化的计算年月日的规则。

更新:

如果您想计算从一年的第一周的第一天开始的天数,其中一年的第一周是根据特定的CalendarWeekRule确定的,您可以这样做(作为GregorianCalendar类的扩展方法说明):

public static class GregorianCalendarExtensions
{
    private const int DaysInWeek = 7;
    public static int GetDaysFromStartOfFirstWeekOfYear(
        this GregorianCalendar calendar,
        DateTime time,
        CalendarWeekRule rule,
        DayOfWeek firstDayOfWeek)
    {
        DayOfWeek dayOfWeek = calendar.GetDayOfWeek(time);
        // Calculate 0-index day of week relative to first day of week.
        int completedDaysInWeek =
            ((int)dayOfWeek + DaysInWeek - (int)firstDayOfWeek) % DaysInWeek;
        // Decrement week of year by 1 to give count of completed weeks.
        int completedWeeksInYear =
            calendar.GetWeekOfYear(time, rule, firstDayOfWeek) - 1;
        // Increment by one to start counting from 1 rather than 0.
        return (completedWeeksInYear * DaysInWeek) + completedDaysInWeek + 1;
    }
}

使用例子:

        GregorianCalendar cal = new GregorianCalendar();
        DateTime jan01;
        DateTime.TryParse("1/1/2011", out jan01);
        for (int i = 0; i < 4; i++)
        {
            DateTime date = jan01 + TimeSpan.FromDays(i);
            Console.WriteLine(
                "{2} {0} is day {1} of year.",
                date.ToShortDateString(),
                cal.GetDaysFromStartOfFirstWeekOfYear(
                    date,
                    CalendarWeekRule.FirstFullWeek,
                    DayOfWeek.Sunday),
                cal.GetDayOfWeek(date));
        }

使用Calendar类?快速检查MSDN文档似乎暗示它没有直接提供您想要的方法。

但是,可以通过组合Calendar类和DateTime类来编写一个方法。