如果有人在某个月的第一周或最后一周说某些事情,你会如何定义这个范围?
我正在研究一个需要以直观的方式处理这类事情的图书馆,但我的直觉并没有声称一个案例或另一个案例.
我可以让它选择不同的行为,但仍然需要一个良好的默认值.
举一个具体的例子,我将随机选择一个月: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标准定义了YEAR的第一周:
日历周号
根据一年中的第一个日历周是包括该年的第一个星期四以及日历年的最后一个日历周是紧接在该日之前的那一周的规则来标识其日历年内的日历周的序数.下一个日历年的第一个日历周
ISO 8601中没有关于本月第一周的内容,因为正如已经指出的那样,定义因国家而异(例如,甚至是公司).哦,标准说星期一星期开始.
如果要构建库,则应允许用户选择如何处理它,方法是使用返回该月的第一个/最后一个完整/部分周的方法,或者通过传递一个参数来指示是否需要完整/部分周.如果您提供不需要规范的方法,请清楚地记录默认值.
public Week GetFirstFullWeekOfMonth( DateTime forDate ) { } public Week GetFirstPartialWeekOfMonth( DateTime forDate ) { }
要么
public Week GetFirstWeekOfMonth( DateTime forDate, bool includePartial ) {}