如何根据日期计算“周数”?

时间:2013-03-11 13:54:40

标签: date calendar week-number

对于我正在研究的系统,我需要一个“标准周数”的“两周数”,它只会每14天翻一次而不是7日。

换句话说,我正在寻找算法,而不是代码,来计算一个日期的周数,以及给出年和周数的开始/结束日期。

问题来自于任何一年的第1周通常不是1月1日,甚至可能是在去年12月。由于这个原因,也有几年最终有53周。

例如:

  • 2009年第1周开始于 2008 -12-29
  • 因此2009年有一周#53,从2009-12-28到2010-01-03
  • 2010年第1周开始于2010-01-04

这些数字是如何得出的?

1 个答案:

答案 0 :(得分:2)

  

这些数字是如何得出的?

嗯,这取决于你正在使用什么系统,但我怀疑你是在ISO-8601周数之后,这个定义如下:

  

2.2。10日历周编号

     

序号,根据一年中第一个日历周是包含该年度第一个星期四以及日历年度的最后一个日历周为一周的规则,在其日历年内标识日历周。紧接在下一个日历年的第一个日历周之前

请记住,ISO-8601的一周开始于星期一,并在星期日结束 - 所以表达“第一个星期四”规则的另一种方式是,一年的第一周是包含至少四天的第一周新的一年。

另一个至关重要的点是,当您使用“一周中的一周”表达值时,您还需要使用“周年”本身,正常的一年。因此,对于2010年1月3日星期日,您可能会将其表达为“第53周,2009年周,周日周日”。使用“错误的年份”非常容易,最终会在12月底和1月初之前弄乱价值。