如果有人在某个月的第一周或最后一周说某些事情,你会如何定义这个范围?
我正在研究一个需要以直观的方式处理这类事情的图书馆,但我的直觉并没有声称一个案例或另一个案例.
我可以让它选择不同的行为,但仍然需要一个良好的默认值.
举一个具体的例子,我将随机选择一个月: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
Run Code Online (Sandbox Code Playgroud)
(注意:我假设一周从星期日开始,但问题也可以在周一提出)
什么跨度是这个月的第一周?
第二周是第一个权利之后的第7天?
这个月的最后一周有多长?
非维基评论欢迎
如果要构建库,则应允许用户选择如何处理它,方法是使用返回该月的第一个/最后一个完整/部分周的方法,或者通过传递一个参数来指示是否需要完整/部分周.如果您提供不需要规范的方法,请清楚地记录默认值.
public Week GetFirstFullWeekOfMonth( DateTime forDate ) { }
public Week GetFirstPartialWeekOfMonth( DateTime forDate ) { }
Run Code Online (Sandbox Code Playgroud)
要么
public Week GetFirstWeekOfMonth( DateTime forDate, bool includePartial ) {}
Run Code Online (Sandbox Code Playgroud)