見出しにあるように、PHP の date("W") 関数は (現在の日付の) 暦週を返します。残念ながら、ほとんどの年の最初の日に 52 または 53 が返されます。これは、単純な考え方では正しいのですが、2012 年 1 月 1 日は暦週 52 ではなく、今年の暦週ではないため、非常に厄介です。ほとんどのカレンダーでは、これを前年の第 0 週または第 52 週と定義しています。
1 年の各日を暦週でグループ化する場合、これは非常に注意が必要です。2012 年 1 月 1 日と 2012 年 12 月 31 日は両方とも同じ暦週グループに入れられます。
私の質問は次のとおりです。PHPの date("W") に代わる(ネイティブの)年に敏感な代替手段はありますか?
編集:私はこの質問の最初のバージョンを非常に不明瞭な方法で書いたと思うので、これが私の編集です:年の最初の日の正しい暦週を返す関数を探しています。PHP の date("W") は 2012 年 1 月 1 日に 52 を返しますが、これは「間違っています」。0 または null にする必要があります。公式の情報源によると、年の最初の暦週はその年の最初の月曜日に始まります。したがって、年の最初の日が月曜日でない場合、それは週 1 ではありません。0週目です。ウィキペディアの記事によると
1 月 1 日が月曜日、火曜日、水曜日、または木曜日の場合は 01 週目です。1 月 1 日が金曜日、土曜日、または日曜日の場合は、前年の 52 週目または 53 週目です。
年の最後の日も 52/53 週にあるため、これは注意が必要です。date("W") は、今年と前年に分割されません。