3

对于我正在开发的系统,我需要一个与标准周数一样工作的“两周数”,它每 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

这些数字是如何得出的?

4

1 回答 1

2

这些数字是如何得出的?

好吧,这取决于您使用的系统,但我怀疑您使用的是 ISO-8601 周数,其定义如下:

2.2.10 日历周数

序号,它根据以下规则标识其日历年内的日历周:一年的第一个日历周是包括该年的第一个星期四的那个,并且一个日历年的最后一个日历周是紧接在该周之前的一周下一个日历年的第一个日历周

请记住,ISO-8601 中的一周从星期一开始,到星期日结束——因此,“第一个星期四”规则的另一种表达方式是,一年中的第一周是包含新年至少四天的第一周.

Another vital point is that when you're expressing values using "week of week year", you need to use the "week year" itself as well, not the normal year. So for Sunday January 3rd 2010, you might express this as "Week 53, week year 2009, day-of-week Sunday". It's all too easy to use the "wrong type of year" and end up messing up values around the end of December and start of January.

于 2013-03-11T14:00:04.837 回答