date_isodate_set

関数の概要

date_isodate_setは、PHPのDateTimeオブジェクトに対してISO週番号と週の曜日を設定するための関数です。ISO 8601の週番号に基づいて日付を指定できるため、特定の年の特定の週の特定の曜日の日付を簡単に取得できます。特に週単位のスケジュール管理やレポート作成などに便利です。

パラメータの説明

  • DateTime $object: 日付を設定したいDateTimeオブジェクト。
  • int $year: 年(4桁の西暦年)。
  • int $week: ISO週番号(1〜53)。
  • int $day(省略可能): 週の曜日。1が月曜日、7が日曜日。省略時は1(月曜日)となる。

戻り値

引数として渡したDateTimeオブジェクトを返します。これにより、設定後のDateTimeオブジェクトをそのまま利用可能です。

使用例

基本的な使い方

$date = new DateTime();
date_isodate_set($date, 2024, 15);
echo $date->format('Y-m-d'); // 2024年の第15週の月曜日の日付を表示

この例では、2024年の15週目の月曜日の日付が設定され、表示されます。曜日を指定しなかった場合、月曜日がデフォルトです。

曜日を指定する例

$date = new DateTime();
date_isodate_set($date, 2024, 15, 5); // 金曜日を指定
echo $date->format('Y-m-d'); // 2024年の第15週の金曜日の日付を表示

ここでは第15週の金曜日の日付を取得しています。曜日パラメータに5を指定することで金曜日となります。

異なる年・週番号の指定例

$date = new DateTime();
date_isodate_set($date, 2023, 1, 1); // 2023年の第1週の月曜日
echo $date->format('Y-m-d'); // 結果を出力

date_isodate_set($date, 2023, 53, 7); // 2023年の第53週の日曜日
echo $date->format('Y-m-d'); // 結果を出力

ISO週番号は最大53週まであり、年によっては第53週が存在する場合があります。この例では年と週番号、曜日をさまざまに設定し、それぞれの日付を取得しています。

関連する関数

  • DateTime::setISODate() – 内部的に利用されることも多い、同様の機能を持つメソッド
  • date() – フォーマット指定して現在日時などを取得
  • DateTime::format() – DateTimeオブジェクトの日付を文字列に変換
  • strtotime() – 日付文字列を解析してタイムスタンプに変換

まとめ

date_isodate_setは、ISO週番号を使って簡単に特定の年・週・曜日の日付を設定できる便利な関数です。週単位のスケジューリングや日付計算が必要な場面で役立ちます。特に月曜日から始まるISO基準の週番号を意識することで、カレンダー計算がより正確に行えるため、実務での利用におすすめです。