我有一週的號碼,我想創建函數返回的第一天和最後一天本星期。
第29周第一天的考試將爲2012-07-16,最後一次爲2012-07-22。
我有一週的號碼,我想創建函數返回的第一天和最後一天本星期。
第29周第一天的考試將爲2012-07-16,最後一次爲2012-07-22。
如何:
int year = 2012;
int weekNumber = 29;
var thursdayInWeek01 = Enumerable.Range(1, 7).Select(i => new DateTime(year, 1, i))
.First(d => d.DayOfWeek == DayOfWeek.Thursday);
var thursdayInCorrectWeek = thursdayInWeek01.AddDays((weekNumber - 1) * 7);
var firstDay = thursdayInCorrectWeek.AddDays(-3);
var lastDay = thursdayInCorrectWeek.AddDays(3);
這是ISO風格週數。
我認爲這可能是在邊緣情況下。如果1月1日是星期五,你認爲星期五到星期一星期,還是一星期,或者什麼?在你的代碼中,你假裝甚至不到一週。 (我認爲) – Servy 2012-08-09 16:25:57
@Servy否,它是[ISO周](http://en.wikipedia.org/wiki/ISO_week_date)號碼。如果1月1日是星期五,那一週是上一年的53周(前一年有53個星期四)。在那種情況下,第一週將在1月4日開始。任何一週從星期一開始,到星期天結束,甚至在兩個日曆年之內。以上算法在邊緣情況下也是精確的。我住的地方通常會使用ISO週數(丹麥)。 – 2012-08-09 21:19:05
對於給定的一年,我認爲 – 2012-08-09 15:52:19