Как программно создать DataTable номера недели ISO в C #? - PullRequest
0 голосов
/ 04 января 2012

Кто-нибудь знает, как построить DataTable недели нет?

Я слышал, что для этого есть много типов расчетов, григорианских или других ... Мои потребности: неделя ИСО по ISO и привязка к данным зависит от номера недели.

DataTable имеет 2 столбца: ISOWeekNo и WeekName

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

Как мне построить программно в C # на основе ISO Week No?

1 Ответ

2 голосов
/ 04 января 2012
// 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);
}
...