DBにunixtimeを保存している場合などに、date()
とstrtotime()
を使って日付を比較、表示するのによく使う方法です。
指定時間のunixtimeを取得する
<?php date_default_timezone_set('Asia/Tokyo'); // ▼ 指定した日付のunixtimeを取得 echo strtotime("2020-04-01 00:00:00"); // 1585666800 echo "\n"; // ▼ 指定日付(年月)のunixtimeを取得 $date_YM = '2020-04-01'; // strtotime()は1ヶ月前など相対的に取得できる。 echo strtotime($date_YM . "-1 month"); // 1582988400 echo "\n"; // ▼ date()にて日付文字列に変換してから、strtotime()にて相対的にunixtimeを取得する。 $unixtime = 1585666800; // 2020-04-01 00:00:00 // 1日後のunixtimeを取得 echo strtotime(date('Y-m-d H:i:s', $unixtime) . " +1 day"); // 1585753200 echo "\n"; // 先月のunixtimeを取得 echo strtotime(date('Y-m-d H:i:s', $unixtime) . " -1 month"); // 1582988400 echo "\n";
指定時間の日付を取得する
<?php date_default_timezone_set('Asia/Tokyo'); // ▼ unixtimeを日付文字列に変換する。 $now_date = 1585666800; echo date('Y-m-d H:i:s', $now_date); // 2020-04-01 00:00:00 echo "\n"; // ▼ 日付文字列の1ヶ月前の日付を取得する。 $now_date = '2020-04-01 00:00:00'; // 1ヶ月前の日付文字列を取得する echo date('Y-m-d', strtotime($now_date.' -1 month')); // 2020-03-01 echo "\n"; // ▼ unixtimeの1ヶ月前の日付文字列を取得する $current_time = 1585666800; // 1ヶ月前の日付文字列を取得する echo date('Y-m-d', strtotime(date('Y-m-d', $current_time). ' -1 month')); // 2020-03-01 echo "\n";
おわり
毎回忘れるので、ここにまとめました。
strtotime()には月末を取得するときに有名な罠があるので、気をつけてください。