Date 一个月的第一周/最后一周是什么?

Date 一个月的第一周/最后一周是什么?,date,definition,Date,Definition,如果有人说某个月的第一周或最后一周发生了什么事,你会如何定义这段时间 背景 我正在研究一个图书馆,它需要以一种直观的方式来处理这类事情,但我的直觉并不能说明这两种情况 我可以让它选择不同的行为,但仍然需要一个好的默认值 举一个具体的例子,我将随机选取一个月: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

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


背景 我正在研究一个图书馆,它需要以一种直观的方式来处理这类事情,但我的直觉并不能说明这两种情况

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


举一个具体的例子,我将随机选取一个月: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
(注意:我假设本周从星期天开始,但问题也可以在星期一再问)

一个月的第一周是多少

  • 6月29日至7月5日——包括第一周在内的一周
  • 7月6日至12日——本月的第一周
  • 第二周就是第一周之后的7天,对吗

    一个月的最后一周是几点

  • 7月27日至8月2日——同上,但最后一天
  • 7月20日至26日——上周也是如此

  • 欢迎非维基评论

    一个月的第一周是包括第一周在内的一周

  • 六月二十九日至七月五日

  • 一个月的第一周是这个月的第一周

  • 七月六日至十二日

  • 一个月的最后一周是包含最后一天的一周

  • 七月二十七日至八月二日

  • 本月的最后一周是本月的最后一周

  • 七月二十日至二十六日

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

    然而,似乎认为它被ISO标准定义为包含星期四的第一周。然而,上述消息来源称,ISO标准并未列出“每月第一周”的规范


    超过300个字符-对不起

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

    日历周数

    序数,根据第一个日历周 一年中的日历周包括该年的第一个星期四和最后一个日历 日历年的周是下一日历年的第一个日历周之前的一周


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

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

    public Week GetFirstFullWeekOfMonth( DateTime forDate ) { }
    
    public Week GetFirstPartialWeekOfMonth( DateTime forDate ) { }
    


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

    有一个相当明显的选择,你缺少了。一个月的第一周是从一个月的第一天开始的七天。因此,在您的示例中,第一周是星期二,从1号到7号星期一。这样,第一到第四周将始终完全包含在该月内,只有第五周将跨越。

    该月的第一周是第0周-该月的第一天所在的一周。 最后一周是一个月最后一天所在的一周

    因此,7月最后一周的周数与8月第一周的周数相同

    **除非**

    所讨论的月份在最后一周的最后一天结束,在这种情况下,下一个月将从新的一周的第一天开始,并具有不同的周数


    :)

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

    如果您希望得到wiki的答案,请将其设为wiki问题。否则,这似乎是一场声誉游戏。还有,你为什么不使用一个现成的库呢?我正在构建一个日期解析器,但没有找到任何足够好的方法。我不是在寻找wiki的答案。我加上的那个只是为了投票。你应该把你的问题变成CWwell@TheTXI:为什么?(我很好奇,不是出于防御)好吧,我想这才是真正的答案。现在,您/希望/它是什么?这无助于日期解析库的开发。“ISO 8601中没有关于一个月的第一周的内容”-虽然这可能是真的,但这意味着一个月的第一周必须遵循与一年的第一周相同的ISO规则。其他任何事情都可能导致荒谬的情况,即一年中的第一周不是一月份的第一周(在同一标准中)。(是的,似乎10年过去了,这仍然是一个未澄清的问题。)我没有想到那一个。。。嗯……注意到了。现在我应该使用什么默认值?我可能会默认为第一周/最后一周,并允许用户选择是否需要部分周。我不知道为什么这会被否决。。。这是我一直使用的定义。所有其他的解释对我来说都没有任何意义。只要这个月的最后一周是完全包含在这个月内的最后一周,你就可以使用它;否则的话,你会有间隔——两周都不属于这两个月。我曾想过这一个,但拒绝了它,认为这是一个无用的选择:谁会使用这个选项,在哪里?在正确+相关之后,我宁愿在正确+无关之前先不正确+相关。我不知道你的库将用于什么,所以我不知道什么是相关的,什么是不相关的。仅仅指出还有第三种选择,再加上“本月的最后一周是本月的最后一周”,就留下了一个1周的空白
    public Week GetFirstWeekOfMonth( DateTime forDate, bool includePartial ) {}