依週數計算日期
許多程式設計任務都需要根據給定的周數計算相應的日期。在 C# 中,可以使用 ISO 8601 標準來實現這一點。
ISO 8601 標準將每年的第一個星期四作為第一週的開始,而不是星期一。利用這項約定,以下的程式碼可以準確地確定指定年份中特定一週的第一天:
<code class="language-csharp">public static DateTime FirstDateOfWeekISO8601(int year, int weekOfYear) { DateTime jan1 = new DateTime(year, 1, 1); int daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek; DateTime firstThursday = jan1.AddDays(daysOffset); var cal = CultureInfo.CurrentCulture.Calendar; int firstWeek = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); var weekNum = weekOfYear; if (firstWeek == 1) { weekNum -= 1; } var result = firstThursday.AddDays(weekNum * 7); return result.AddDays(-3); }</code>
此代碼解決了第一個星期四不在當年第一週的情況。透過從第一個星期四減去三天,它可以根據 ISO 8601 標準正確地將星期一作為指定週的第一天返回。
以上是如何使用 ISO 8601 在 C# 中根據週數計算日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!