【问题标题】:What is the first/last week of a month? [closed]一个月的第一周/最后一周是什么时候? [关闭]
【发布时间】:2009-03-02 21:16:58
【问题描述】:

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


背景

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

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


举个具体的例子,我会随机选择一个月份: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 cmets

【问题讨论】:

  • 如果您期待 wiki 答案,请将其设为 wiki 问题。否则,这似乎是一场名誉游戏。另外,您为什么不使用现成的库?
  • 我正在构建一个日期解析器,但没有找到足够好的工作。
  • 我不是在寻找 wiki 答案。我添加的只是用于投票。
  • 你也应该让你的问题成为 CW
  • @TheTXI:为什么? (我很好奇,不是防御)

标签: date definition


【解决方案1】:

There is no answer because it varies even inside a country.

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


超过 300 个字符 - 抱歉!

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

日历周数

序号,根据第一个规则标识其日历年内的日历周 一年中的日历周是包括该年第一个星期四和最后一个日历的星期 一个日历年的一周是紧接下一个日历年的第一个日历周之前的一周

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

【讨论】:

  • 好吧,我想这是真正的答案。现在你/喜欢/它是什么?
  • 这对开发日期解析库没有帮助。
  • “ISO 8601 中没有关于该月的第一周的内容” - 虽然这可能是真的,但这意味着一个月的第一周必须遵循与第一周相同的 ISO 规则一年中的一周。其他任何事情都可能导致一年中的第一周不是一月的第一周的荒谬情况(在一个相同的标准中)。 (是的,似乎 10 年后这仍然是一个未澄清的问题。:))
【解决方案2】:

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

public Week GetFirstFullWeekOfMonth( DateTime forDate ) { }

public Week GetFirstPartialWeekOfMonth( DateTime forDate ) { }

或者

public Week GetFirstWeekOfMonth( DateTime forDate, bool includePartial ) {}

【讨论】:

  • 注明。现在我应该使用什么默认值?
  • 我可能会默认为第一个/最后一个完整周,并允许用户选择是否需要部分周。
【解决方案3】:

一个月的第一周是整个月的第一周

  1. 7 月 6 日 - 12 日

【讨论】:

  • 这与“本月的最后一周是本月的最后一周”相结合,在大多数情况下会留下 1 周的空白。
【解决方案4】:

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

  1. 6 月 29 日 - 7 月 5 日

【讨论】:

  • 我不知道为什么这被否决了......这是我一直使用的定义。所有其他的解释对我来说都没有任何意义。
  • 您可以使用这个,只要该月的最后一周是完全包含在该月内的最后一周;否则,您会出现间隔 - 周不属于任何一个月。
【解决方案5】:

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

  1. 7 月 27 日 - 8 月 2 日

【讨论】:

  • 如果您将此定义与“本月的第一周是包括本月的第一周的那一周”结合起来,您会得到一些周同时属于两个月。您需要成对定义第一周和最后一周的规则,确保它们不重叠。
  • 当月的第 5 周(如果有)总是会推到下个月。 不介意有几个星期有多个名字。你觉得有什么理由避免它吗?
  • 嗯,我想这取决于您为什么将其称为本月的最后一周。如果您尝试计算 7 月最后一周和 8 月第一周的收入并最终重复计算收入,会计师往往会感到不安。
  • 同样的,如果放了一周的假,人家也会心烦意乱,因为既是七月的最后一周,也是八月的第一周,公司给他们10天的假期,而他们只休了一周的假。休息 5 天。
  • 我正在寻找地图 /to/ 日期跨度; “上周”->日期-日期,而不是来自它。
【解决方案6】:

一个月的最后一周是整个月的最后一周

  1. 7 月 20 日至 26 日

【讨论】:

  • 当与“第一周是包括本月第一周的那一周”结合使用时,这是有道理的。
【解决方案7】:

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

【讨论】:

  • 我没想到那个...嗯...
【解决方案8】:

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

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

** 除非 **

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

:)

【讨论】:

    【解决方案9】:

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

    【讨论】:

      【解决方案10】:

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

      【讨论】:

      • 我曾想过那个选项,但拒绝了它,因为它是一个无用的选项:谁会使用该选项以及在哪里使用?在正确+相关之后,我宁愿在正确+不相关之前先不正确+相关。
      • 我不知道你的库将用于什么,所以我不知道什么是相关的,什么不是。只是指出还有第三种选择。
      【解决方案11】:

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

      【讨论】:

      • 这就是我试图解决这个问题的原因。
      猜你喜欢
      • 2011-02-20
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      相关资源
      最近更新 更多