ある月の最初または最後の週に何かが起こったと誰かが言った場合、そのスパンをどのように定義しますか?
私はこの種のことを直感的な方法で処理する必要があるライブラリに取り組んでいますが、私の直感はどちらの場合も主張していません。
別の動作を選択させることはできますが、それでも適切なデフォルトが必要です。
具体的な例として、ランダムな月を選択します: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
(注:週は日曜日から始まると仮定しますが、月曜日にも質問することができます)
月の最初の週はどのくらいですか?
2週目は最初の権利からちょうど7日ですか?
その月の最後の週はどのくらいの期間ですか?
wiki以外のコメントを歓迎します
ただし、 このソース は、木曜日を含む最初の週としてISO標準で定義されていると考えているようです。ただし、上記の情報源によると、ISO規格には「月の最初の週」の仕様は記載されていません。
300文字以上-ごめんなさい!
ISO 8601規格では、YEARの最初の週を次のように定義しています。
暦週番号
年の最初の暦週はその年の最初の木曜日を含むものであり、暦年の最後の暦週はその直前の週であるという規則に従って、その暦年内の暦週を識別する順序番号。次の暦年の最初の暦週
すでに述べたように、定義は国によって(さらには会社によっても)異なるため、ISO8601には月の最初の週については何もありません。ああ、そして標準では、週は月曜日に始まると言われています。
ライブラリを構築している場合は、月の最初/最後の完全な/部分的な週を返すメソッドを使用するか、完全な/を必要とするかどうかを示す引数を渡すことによって、ユーザーがライブラリを処理する方法を選択できるようにする必要があります。部分的な週。仕様を必要としないメソッドを提供する場合は、デフォルトのいずれかを明確に文書化してください。
public Week GetFirstFullWeekOfMonth( DateTime forDate ) { }
public Week GetFirstPartialWeekOfMonth( DateTime forDate ) { }
または
public Week GetFirstWeekOfMonth( DateTime forDate, bool includePartial ) {}
月の最初の週は、その月の最初の週です。
月の最初の週は、最初の週を含む週です。
月の最後の週は、最後の日を含む週です。
月の最後の週は、その月の最後の週です。
私の定義では、最初の週はその月の最初の就業日の週であり、同様に最後の週はその月の最後の就業日の週です。
月の最初の週は第0週、つまり月の最初の日がある週です。先週は月末の週です
したがって、7月の最後の週の週番号IS 8月の最初の週の週番号と同じ
**そうでない場合**
問題の月は先週の最終日に終了します。この場合、翌月は新しい週の初日に開始し、週番号が異なります。
:)
あなたが見逃しているかなり明白なオプションがあります。月の最初の週は、その月の最初の日から始まる7日間です。したがって、あなたの例では、最初の週は火曜日の1日から月曜日の7日です。このように、最初の週から4週目は常に月内に完全に含まれ、5週目だけが交差します。
月の最初の週は、定義された週の期間の4日以上を所有する最初の週です。 (実際にはそうではありませんが、オプションとしてそれを投入すると思いました)
ユーザーに話しかけるそして、プログラムが「月の最初の週」と「その月の最後の週」と言ったときに、それが何を意味すると思うかを尋ねます。