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

如何在C#中以编程方式构建ISO周数数据表?,c#,datatable,iso,week-number,C#,Datatable,Iso,Week Number,有人知道如何建立第二周的数据表吗 我听说有很多计算方法,比如格里高利法等等。。。 我的需求是ISO周号,绑定到datatable取决于周号 DataTable有两列:ISOWeekNo和WeekName ISOWeekNo WeekName 1 01 Jan 2012 To 07 Jan 2012 2 08 Jan 2012 To 14 Jan 2012 如何基于ISO周号以C语言编程构建?问题在于,第一个ISO 8601周确实从2012年1月2日开

有人知道如何建立第二周的数据表吗

我听说有很多计算方法,比如格里高利法等等。。。 我的需求是ISO周号,绑定到datatable取决于周号

DataTable有两列:ISOWeekNo和WeekName

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

如何基于ISO周号以C语言编程构建?

问题在于,第一个ISO 8601周确实从2012年1月2日开始,而不是2012年1月1日。谢谢你的代码。。。但第52周为2012年1月1日至2012年1月7日,不包括2012年12月23日至2012年12月31日之间的日期。您要求提供ISO周号。2012/01/01是2011年第52周。2012年第1周从2012年1月2日开始。你可以将
日历周规则.FirstFullWeek
更改为
日历周规则.FirstDay
,但这样就不会是ISO。兄弟,我的意思是在12月份你可以检查这一点。失去了一个星期。谢谢你的支持
// 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);
}