はじめに
これは個人的なメモです。
毎回調べながら書いているのでいっそのこと・・・調べていることを書いておこうという話。
日付の比較には個人的にDateTimeクラスを使用している。
DateTime とは?
DateTime クラス
(PHP 5 >= 5.2.0, PHP 7)
日付と時刻をあらわします。
文字列の時でも大丈夫か?
大丈夫!
$sample = array(
'date_sample1' => '20170101',
'date_sample2' => '20180101'
);
$date_1 = new Datetime($sample['date_sample1']);
$date_2 = new Datetime($sample['date_sample2']);
print_r($date_1);
print_r($date_2);
以下は結果
DateTime Object
(
[date] => 2017-01-01 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
DateTime Object
(
[date] => 2018-01-01 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
比較は関数使え
// 比較
$diff = $date_1->diff($date_2);
print_r($diff);
結果
DateInterval Object
(
[y] => 1
[m] => 0
[d] => 0
[h] => 0
[i] => 0
[s] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 0
[days] => 365
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
diff で比較した際、差分の日付の取得の仕方
$diff = $date_1->diff($date_2)->format('%R%a');
%R%a
を使用すると、正負の値が取得できる。
$diff = intval($date_1->diff($date_s)->format('%R%a'));
で取得する際に、intval
でint型にすればなおさら取得しやすい!
比較はIF文でも可能
// if 文での比較
if($date_1 > $date_2) {
print('date_1の方が大きい');
}
else {
print('date_2の方が大きい');
}
結果
date_2の方が大きい