PHPで日付の比較

フォーマットが異なる日付の比較方法

過去/未来の判定

PHP

// 比較する日付同士のフォーマットが同じ if ($date < '2019-05-24') { echo "2019-05-24より過去。"; } elseif ($date == '2019-05-24') { echo "2019-05-24と一致。"; } else { echo "2019-05-24より未来。"; } // 比較する日付同士のフォーマットが異なる // Y-m-dとY/m/dを比較する場合 // strtotime('2019/05/24'); は 1558623600 // strtotime('2019-05-24'); は 1558623600 if (strtotime($date) < strtotime('2019-05-24')) { echo "2019-05-24より過去。"; } elseif (strtotime($date) == strtotime('2019-05-24')) { echo "2019-05-24と一致。"; } else { echo "2019-05-24より未来。"; } // ファイルのタイムスタンプもstrtotimeを使って比較 // 更新日時が‎2019年5月1日、20:30:00であれば、 filemtimeは1556710200 if (filemtime('foo.txt') < strtotime('2019-05-24')) { echo "2019-05-24より過去。"; } elseif (filemtime('foo.txt') == strtotime('2019-05-24')) { echo "2019-05-24と一致。"; } else { echo "2019-05-24より未来。"; } // 時間が含まれる場合 秒がセットされていない場合は0秒扱い // strtotime('2019-05-24 05:57'); は 1558645020 // strtotime('2019-05-24 05:57:00'); は 1558645020 if (strtotime($date) < strtotime('2019-05-24 05:57')) { echo "2019-05-24 05:57より過去。"; } // 分がセットされていない場合はstrtotimeでは結果が返ってこない

日付の差

PHP

// 日数のみ // 2019-05-01と2019-05-24の差は1849日 $diff = strtotime($date) - strtotime('2019-05-24'); echo abs($diff / (60 * 60 * 24)) . '日'; // 日数と時間 // 2019-05-01 20:30:40と2019-05-24 05:57:08の差は22日9時間26分28秒 $diff = strtotime($date) - strtotime('2019-05-24 05:57:08'); // 日 $days = floor(abs($diff / (60 * 60 * 24))); // 余りを求める(=時間、分、秒) $daysRemaind = $diff % (60 * 60 * 24); $hours = 0; if ($daysRemaind > 0) { // 時間 $hours = floor(abs($daysRemaind / (60 * 60))); // 余りを求める(=分、秒) $hoursRemaind = $daysRemaind % (60 * 60); } $minutes = 0; $seconds = 0; if ($hoursRemaind > 0) { // 分 $minutes = floor(abs($hoursRemaind / 60)); // 秒 $seconds = $hoursRemaind % 60; } echo $days . '日'; if ($hours > 0) { echo $hours . '時間'; } if ($minutes > 0) { echo $minutes . '分'; } if ($seconds > 0) { echo $seconds . '秒'; }

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について