【问题标题】:find first and last date of a given week number [duplicate]查找给定周数的第一个和最后一个日期[重复]
【发布时间】:2012-08-10 00:41:15
【问题描述】:

可能重复:
Calculate date from week number

我有一个星期数,我正在尝试创建函数来返回本周的第一天和最后一天。

例如,第 29 周的第一天是 2012-07-16,最后一天是 2012-07-22。

【问题讨论】:

  • 对于给定的年份,我假设

标签: c# wpf


【解决方案1】:

这个怎么样:

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 不,它是ISO week 数字。如果 1 月 1 日是星期五,则该周是前一年的第 53 周(前一年有 53 个星期四)。在这种情况下,第 1 周将从 1 月 4 日开始。任何一周都从星期一开始,到星期日结束,甚至是跨越两个日历年的几周。即使在边缘情况下,上述算法也是准确的。 ISO 周数通常在我居住的地方(丹麦)使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多