DateIntervalクラス
クラスDateIntervalは、PHPで時間間隔を操作することを可能にします。
これは、2つの日付間の差分を保存するため、または日付操作メソッドで間隔を指定するために使用されます。
間隔は特別なフォーマットで作成されます。
構文
DateInterval::__construct(string $duration)
間隔のフォーマット
フォーマットは文字P (period)
と以下の要素で構成されます:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
このフォーマットでは: Y - 年, M - 月,
D - 日, T - 時間の区切り文字,
H - 時間, M - 分, S - 秒,
W - 週。
これらの文字の前に、対応する値を書く必要があります。
例えば、3Yは3年を意味し、
5Y2Mは5年と2ヶ月を表します。
作成後、オブジェクトDateInterval
は以下のプロパティを含みます:
<?php
$interval->y // 年
$interval->m // 月
$interval->d // 日
$interval->h // 時間
$interval->i // 分
$interval->s // 秒
$interval->f // マイクロ秒
$interval->invert // 間隔が負の場合1
$interval->days // 日数 (diff()で作成された場合)
?>
例で間隔の動作を見てみましょう:
例
1時間、45分、30秒の間隔を作成します:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
コードの実行結果:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
例
3週と2日の間隔を作成します:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
コードの実行結果:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
例
5ヶ月、10日、6時間の間隔を作成します:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
コードの実行結果:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
例
2年と15分の間隔を作成します:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
コードの実行結果:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
例
1日、12時間、30秒の間隔を作成します:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
コードの実行結果:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
例
1年と3ヶ月の負の間隔 (過去への間隔) を作成します:
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
コードの実行結果:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
例
2時間、30分の負の間隔 (過去への間隔) を作成します:
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
コードの実行結果:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
例
現在の日付に間隔を加算します:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
コードの実行結果:
'2023-01-11'
例
2つの日付間の差分を計算します:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
コードの実行結果:
'1 months 14 days'
関連項目
-
日付と時刻を表すクラス
DateTime,
-
タイムゾーンを表すクラス
DateTimeZone,