読者です 読者をやめる 読者になる 読者になる

はせる

は・せる、馳せる

週番号って、知ってる?使ってる?

 唐突ではありますが、「週番号」って知ってる?使ってる?

 ほぼ日手帳の月間カレンダーページ左側にちょこんと載ってる「W01」などの表記、あれが週番号。最近は、閲覧したページをまとめるときに週単位の区切りとして使ってます。

参考: 文庫本サイズのオリジナル - 全ページ解説 - ほぼ日手帳 2016

[amazonjs asin="4838727739" locale="JP" title="ほぼ日手帳公式ガイドブック2016 This is my LIFE."]

調べてみる

 切っ掛けは下記のページ。

date("Y_W")の罠 - Qiita

 この件についてはなるほどー……という感じなんだけど、週番号ってISOでちゃんと定義されてるんだ、しかもこれだと1週間は月曜始まりなんだ……というところに引っかかる。へー。PHPで曜日を得ると日曜日は0(最初)なのにね。

ところで

 年と週番号から日付を得る関数ってあるんだろうか。ない。ということでISO 8601準拠で書いた。

public function week_start_date($year, $week_number=1) {
    $time = strtotime("{$year}-01-01");
    $week = date("w", $time);
    if($week>4 || $week==0) {
        $time = strtotime("next Monday", $time);
    } else {
        $time = strtotime("last Monday", $time);
    }
    $week_number--;
    return date("Y/m/d", strtotime("+{$week_number} Week", $time));
}

 週番号は1から最大で52か53とかエラー処理はしていません。まあ日付は返ってくるからいいのかもしれない。その他テストはまだろくにしてません。関数名も気が利いてないし、ここから週の範囲も得られるようなオプションなど手を加えていこうかな、というところです。今回はここまで。では。