17

如果有人说某个月的第一周或最后一周发生了什么事,你会如何定义这个跨度?


背景

我正在开发一个需要以直观方式处理此类事情的库,但我的直觉并没有要求任何一种情况。

我可以让它选择不同的行为,但仍然需要一个好的默认值。


举一个具体的例子,我将随机选择一个月份:2008 年 7 月

s  m  t  w  r  f  s
--------------------
      1  2  3  4  5
6  7  8  9  10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

(注意:我假设这周从星期日开始,但这个问题也可以在星期一提出)

一个月的第一周是几星期?

  1. 6 月 29 日 - 7 月 5 日——包括第一个
  2. 7 月 6 日至 12 日——进入本月的第一周

第二周是第一周之后的7天吧?

一个月的最后一周是多少天?

  1. 7 月 27 日 - 8 月 2 日——同上,但最后一天
  2. 7 月 20 日至 26 日——同上,但最后一周

欢迎非wiki评论

4

11 回答 11

12

没有答案,因为即使在一个国家内部它也会有所不同。

但是,该消息来源似乎认为 ISO 标准将其定义为包含星期四的第一周。然而,上述消息来源称 ISO 标准没有列出“每月第一周”的规范


超过 300 个字符 - 对不起!

ISO 8601 标准将一年的第一周定义为:

日历周数

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

ISO 8601 中没有关于该月的第一周的内容,因为如前所述,定义因国家/地区而异(例如,甚至因公司而异)。哦,标准说每周从星期一开始。

于 2009-03-02T21:23:13.913 回答
6

如果您正在构建一个库,您应该允许用户选择他们希望如何处理它,方法是使用返回一个月的第一个/最后一个完整/部分周的方法,或者传递一个指示您是否想要完整/部分周。如果您提供不需要规范的方法,请清楚地记录默认值。

public Week GetFirstFullWeekOfMonth( DateTime forDate ) { }

public Week GetFirstPartialWeekOfMonth( DateTime forDate ) { }

或者

public Week GetFirstWeekOfMonth( DateTime forDate, bool includePartial ) {}
于 2009-03-02T21:24:18.950 回答
3

该月的第一周是该月的第一周

  1. 7 月 6 日至 12 日
于 2009-03-02T21:17:45.207 回答
2

该月的第一周是包括第一周的那一周

  1. 6 月 29 日 - 7 月 5 日
于 2009-03-02T21:17:14.367 回答
2

一个月的最后一周是包括最后一天的那一周

  1. 7 月 27 日 - 8 月 2 日
于 2009-03-02T21:18:08.030 回答
2

该月的最后一周是该月的最后一周

  1. 7 月 20 日至 26 日
于 2009-03-02T21:18:24.223 回答
1

我的定义是第一周是该月第一个工作日的那一周,同样最后一周是该月最后一个工作日的那一周。

于 2009-03-02T21:22:02.013 回答
1

该月的第一周是第 0 周 - 具有该月第一天的那一周。上周是有该月最后一天的那一周

因此,七月最后一周的周数与八月第一周的周数相同

** 除非 **

有问题的月份在上周的最后一天结束,在这种情况下,下个月将从新一周的第一天开始,并且有不同的周数

:)

于 2009-03-14T17:40:08.513 回答
0

每月的第一周是拥有定义周期间的 4 天或更多天的第一周。(不是真的,但我想我会把它作为一种选择)

于 2009-03-02T21:38:44.720 回答
0

您缺少一个相当明显的选项。每月的第一周是从该月的第一天开始的 7 天。因此,在您的示例中,第一周是周二,第一周到周一,第七周。这样,第一周到第 4 周将始终完全包含在该月内,并且只有第 5 周会交叉。

于 2009-03-02T22:27:19.203 回答
0

与您的用户交谈并询问他们,当程序对他们说“本月的第一周”和“本月的最后一周”时,他们认为这意味着什么。

于 2009-03-14T17:48:12.237 回答