17

ある月の最初または最後の週に何かが起こると誰かが言うとしたら、その期間をどのように定義しますか?


バックグラウンド

私はこの種のことを直感的に処理する必要があるライブラリに取り組んでいますが、私の直感はいずれかのケースを主張していません。

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


具体的な例として、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 週は何スパンですか。

  1. 6 月 29 日 ~ 7 月 5 日-- 最初の週を含む週
  2. 7 月 6 日 - 12 日- その月の最初の週

2 週目は 1 週目の 7 日間ですよね?

月の最後の週は何スパンですか?

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

ウィキ以外のコメント歓迎

4

11 に答える 11

12

国内でも違うので答えはありません。

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


300 文字以上 - 申し訳ありません。

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

暦週番号

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

ISO 8601 には、月の第 1 週については何も記載されていません。前述のように、定義は国によって (さらには企業によっても) 異なるためです。ああ、標準では、週は月曜日に始まると言われています。

于 2009-03-02T21:23:13.913 に答える
6

ライブラリを構築している場合は、その月の最初/最後の完全な週/部分的な週を返すメソッドを持つか、完全な/部分的な週。仕様を必要としないメソッドを提供する場合は、どちらがデフォルトであるかを明確に文書化してください。

public Week GetFirstFullWeekOfMonth( DateTime forDate ) { }

public Week GetFirstPartialWeekOfMonth( DateTime forDate ) { }

または

public Week GetFirstWeekOfMonth( DateTime forDate, bool includePartial ) {}
于 2009-03-02T21:24:18.950 に答える
3

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

  1. 7月6日~12日
于 2009-03-02T21:17:45.207 に答える
2

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

  1. 6月29日~7月5日
于 2009-03-02T21:17:14.367 に答える
2

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

  1. 7 月 27 日 - 8 月 2 日
于 2009-03-02T21:18:08.030 に答える
2

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

  1. 7月20日~26日
于 2009-03-02T21:18:24.223 に答える
1

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

したがって、7月の最後の週の週番号は8月の最初の週の週番号と同じです。

** そうでもなければ **

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

:)

于 2009-03-14T17:40:08.513 に答える
1

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

于 2009-03-02T21:22:02.013 に答える
0

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

于 2009-03-14T17:48:12.237 に答える
0

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

于 2009-03-02T22:27:19.203 に答える
0

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

于 2009-03-02T21:38:44.720 に答える