根据周数计算日期
许多编程任务都需要根据给定的周数计算相应的日期。在 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中文网其他相关文章!