-3

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

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

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

4

1 回答 1

2

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

DateTime dt=DateTime.Parse(MyTextBlock.Text);
int weeknumber=weekNumber(dt);
DateValue.Text=weeknumber.ToString();
于 2013-05-24T20:44:23.010 回答