web-dev-qa-db-ja.com

月の最初/最後の週は何ですか?

ある月の最初または最後の週に何かが起こったと誰かが言った場合、そのスパンをどのように定義しますか?


バックグラウンド

私はこの種のことを直感的な方法で処理する必要があるライブラリに取り組んでいますが、私の直感はどちらの場合も主張していません。

別の動作を選択させることはできますが、それでも適切なデフォルトが必要です。


具体的な例として、ランダムな月を選択します: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日-その月の最初の週

2週目は最初の権利からちょうど7日ですか?

その月の最後の週はどのくらいの期間ですか?

  1. 7月27日-8月2日-同上だが最終日
  2. 7月20日-26日-同上だが先週

wiki以外のコメントを歓迎します

16
BCS

国内でも変動するので答えはありません。

ただし、 このソース は、木曜日を含む最初の週としてISO標準で定義されていると考えているようです。ただし、上記の情報源によると、ISO規格には「月の最初の週」の仕様は記載されていません。


300文字以上-ごめんなさい!

ISO 8601規格では、YEARの最初の週を次のように定義しています。

暦週番号

年の最初の暦週はその年の最初の木曜日を含むものであり、暦年の最後の暦週はその直前の週であるという規則に従って、その暦年内の暦週を識別する順序番号。次の暦年の最初の暦週

すでに述べたように、定義は国によって(さらには会社によっても)異なるため、ISO8601には月の最初の週については何もありません。ああ、そして標準では、週は月曜日に始まると言われています。

11
Malfist

ライブラリを構築している場合は、月の最初/最後の完全な/部分的な週を返すメソッドを使用するか、完全な/を必要とするかどうかを示す引数を渡すことによって、ユーザーがライブラリを処理する方法を選択できるようにする必要があります。部分的な週。仕様を必要としないメソッドを提供する場合は、デフォルトのいずれかを明確に文書化してください。

public Week GetFirstFullWeekOfMonth( DateTime forDate ) { }

public Week GetFirstPartialWeekOfMonth( DateTime forDate ) { }

または

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

月の最初の週は、その月の最初の週です。

  1. 7月6〜12日
3
BCS

月の最初の週は、最初の週を含む週です。

  1. 6月29日-7月5日
2
BCS

月の最後の週は、最後の日を含む週です。

  1. 7月27日-8月2日
2
BCS

月の最後の週は、その月の最後の週です。

  1. 7月20日〜26日
2
BCS

私の定義では、最初の週はその月の最初の就業日の週であり、同様に最後の週はその月の最後の就業日の週です。

1
baretta

月の最初の週は第0週、つまり月の最初の日がある週です。先週は月末の週です

したがって、7月の最後の週の週番号IS 8月の最初の週の週番号と同じ

**そうでない場合**

問題の月は先週の最終日に終了します。この場合、翌月は新しい週の初日に開始し、週番号が異なります。

:)

1
user78084

あなたが見逃しているかなり明白なオプションがあります。月の最初の週は、その月の最初の日から始まる7日間です。したがって、あなたの例では、最初の週は火曜日の1日から月曜日の7日です。このように、最初の週から4週目は常に月内に完全に含まれ、5週目だけが交差します。

0
Kevin

月の最初の週は、定義された週の期間の4日以上を所有する最初の週です。 (実際にはそうではありませんが、オプションとしてそれを投入すると思いました)

0
Joe Phillips

ユーザーに話しかけるそして、プログラムが「月の最初の週」と「その月の最後の週」と言ったときに、それが何を意味すると思うかを尋ねます。

0
Kevin Conner