C#周日期

Nic*_*las 9 c# windows datetime gregorian-calendar

我有以下代码来获取DateTime对象Time中给出的年份的周数

    public static int WeeksInYear(DateTime date)
    {
        GregorianCalendar cal = new GregorianCalendar(GregorianCalendarTypes.Localized);
        return cal.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
    }
Run Code Online (Sandbox Code Playgroud)

现在我给这个函数的日期是1/1/2012,它应该返回第1周,但是他回到第52周.我似乎无法弄清楚为什么.任何人都知道为什么?

Kin*_*nus 8

该算法完全按照您的指示执行.你将CalanderWeekRule设置为FirstFourDayWeek.2012年1月1日不是前四天的一部分,所以你已经指示压光器从1月2日开始计数.

从周数计算日期


小智 5

public static int WeeksInYear(DateTime date)
{
    GregorianCalendar cal = new GregorianCalendar(GregorianCalendarTypes.Localized);
    return cal.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
Run Code Online (Sandbox Code Playgroud)

我认为如果将CalendarWeekRule.FirstFourDayWeek更改为CalendarWeekRule.FirstDay,那么它将正常工作。

我改变它,然后它的工作正常。