如何在C#中以编程方式构建ISO周数DataTable?

时间:2012-01-04 08:55:32

标签: c# datatable iso week-number

任何人都知道如何构建一周的DataTable?

我听说有很多类型的计算,格里高利或其他...... 我的需求是ISO Week No并且绑定到datatable取决于周数

DataTable有两列:ISOWeekNo和WeekName

ISOWeekNo   WeekName
1           01 Jan 2012 To 07 Jan 2012
2           08 Jan 2012 To 14 Jan 2012

如何根据ISO周编号在C#中以编程方式构建?

1 个答案:

答案 0 :(得分:2)

// Set up DataTable
var dt = new DataTable();
var col1 = new DataColumn("ISOWeekNo", typeof(int));
var col2 = new DataColumn("WeekName", typeof(string));
dt.Columns.AddRange(new[] { col1, col2 });
dt.PrimaryKey = new[] { col1 };

// Start with the first day of this year and check each day until next year.
var day = new DateTime(DateTime.Now.Year, 1, 1);
while (day.Year == DateTime.Now.Year)
{
    var weekNum = DateTimeFormatInfo.InvariantInfo.Calendar.GetWeekOfYear(day, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday);
    if (!dt.Rows.Contains(weekNum))
        dt.Rows.Add(weekNum, string.Format("{0} to {1}", day.ToString("dd' 'MMM' 'yyyy"), day.AddDays(6).ToString("dd' 'MMM' 'yyyy")));
    day = day.AddDays(1);
}