【PHP8.x】getStartDateメソッドの使い方

getStartDateメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

getStartDateメソッドは、DatePeriodオブジェクトに設定されている期間の開始日時を取得するメソッドです。DatePeriodクラスは、開始日時、終了日時、そして時間間隔を指定することで、特定の期間内の一連の日付や時刻の繰り返しを表現します。例えば、「毎週月曜日」や「1ヶ月ごとの15日」といった周期的な日付の集まりを扱う際に利用されます。このgetStartDateメソッドを使用すると、そのDatePeriodオブジェクトがどの時点から始まっているのかを正確に知ることができます。メソッドの戻り値は、日付と時刻の情報を保持するDateTimeInterface型のオブジェクトです。これは通常、DateTimeまたはDateTimeImmutableオブジェクトであり、DatePeriodオブジェクトを生成する際にコンストラクタで指定した開始日時の情報と完全に一致します。例えば、あるタスクの繰り返し期間を管理するプログラムで、その期間の最初の実行日を確認したい場合などにこのメソッドが役立ちます。取得した開始日時オブジェクトに対して、フォーマットを変更して表示したり、他の日付との比較を行ったりすることが可能です。

構文(syntax)

1<?php
2
3// 期間オブジェクト (2023-01-01から1日おきに4回) を作成
4$datePeriod = new DatePeriod(
5    new DateTime('2023-01-01'),
6    new DateInterval('P1D'),
7    4
8);
9
10// DatePeriodオブジェクトから開始日を取得します
11$startDate = $datePeriod->getStartDate();
12
13// 取得した開始日を Y-m-d 形式で出力します
14echo $startDate->format('Y-m-d');
15
16?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

DateTimeInterface

DatePeriod オブジェクトの開始日時を表す DateTimeInterface インターフェースを実装したオブジェクトを返します。

サンプルコード

DatePeriodのgetStartDateで開始日を取得する

1<?php
2
3/**
4 * DatePeriodから開始日時を取得するサンプル関数
5 */
6function showDatePeriodStartDate(): void
7{
8    // 期間の開始日時 (2023年1月1日)
9    $start = new DateTime('2023-01-01');
10
11    // 1ヶ月ごとの間隔
12    $interval = new DateInterval('P1M');
13
14    // 繰り返し回数 (6回)
15    $recurrences = 6;
16
17    // 開始日時、間隔、繰り返し回数からDatePeriodオブジェクトを生成
18    $period = new DatePeriod($start, $interval, $recurrences);
19
20    // getStartDate()メソッドで期間の開始日時を取得
21    $startDate = $period->getStartDate();
22
23    // 取得した開始日時 (DateTimeオブジェクト) を 'Y-m-d' 形式の文字列で出力
24    // 出力結果: この期間の開始日: 2023-01-01
25    echo 'この期間の開始日: ' . $startDate->format('Y-m-d') . PHP_EOL;
26}
27
28// 関数を実行
29showDatePeriodStartDate();
30

PHPのDatePeriod::getStartDate()メソッドは、DatePeriodオブジェクトで定義された期間の開始日時を取得するために使用します。このメソッドは引数を必要としません。戻り値として、開始日時を表すDateTimeInterface型のオブジェクト(通常はDateTimeDateTimeImmutableオブジェクト)を返します。

サンプルコードでは、まず特定の日時を扱うDateTimeオブジェクト(開始日)、期間の間隔を指定するDateIntervalオブジェクト、そして繰り返し回数を定義しています。これらの情報をもとに、2023年1月1日から1ヶ月ごとに6回繰り返す期間を表すDatePeriodオブジェクトを生成します。

次に、$period->getStartDate()を呼び出すことで、このDatePeriodオブジェクトに設定されている開始日時を取得しています。返されたDateTimeオブジェクトに対し、format()メソッドを使って日付を「年-月-日」の形式の文字列に変換し、画面に出力します。結果として、DatePeriodオブジェクトを生成する際に指定した開始日「2023-01-01」が正しく表示されます。このように、getStartDate()は期間オブジェクトから元の開始日情報を手軽に取り出すための便利なメソッドです。

getStartDate()メソッドは、日付の文字列ではなくDateTimeオブジェクトを返す点に注意が必要です。そのため、そのまま画面に出力しようとするとエラーになる可能性があります。サンプルコードのようにformat()メソッドを使い、'Y-m-d'のような書式を指定して文字列に変換してから利用してください。このメソッドで取得できるのは、DatePeriodオブジェクトを作成する際にコンストラクタで指定した開始日時の情報です。戻り値はDateTimeInterfaceという型なので、取得したオブジェクトを使ってさらに日付の比較や計算を行うことも可能です。

関連コンテンツ

関連プログラミング言語