从日期算起周数

时间:2013-05-24 20:38:04

标签: c# datetime

我在这方面很糟糕,但我想计算从日期开始的周数。 而我发现的是:

private int weekNumber(DateTime fromDate)
    {
        DateTime startOfYear = fromDate.AddDays(-fromDate.Day + 1).AddMonths(-fromDate.Month + 1);
        DateTime endOfYear = startOfYear.AddYears(1).AddDays(-1);
        int[] iso8601Correction = { 6, 7, 8, 9, 10, 4, 5 };
        int nds = fromDate.Subtract(startOfYear).Days + iso8601Correction[(int)startOfYear.DayOfWeek];
        int wk = nds / 7;
        switch (wk)
        {
            case 0:
                return weekNumber(startOfYear.AddDays(-1));
            case 53:
                if (endOfYear.DayOfWeek < DayOfWeek.Thursday)
                    return 1;
                else
                    return wk;
            default: return wk;
        }
    }

所以这一切看起来都很棒。但是我如何在文本块上使用它作为例子。不知道这个。

1 个答案:

答案 0 :(得分:2)

根据您的评论。您应该为weekNumber方法找到更好的实现。并重命名遵循标准命名约定。考虑将weekNumber()作为扩展方法。

DateTime dt=DateTime.Parse(MyTextBlock.Text);
int weeknumber=weekNumber(dt);
DateValue.Text=weeknumber.ToString();