web関連
【PHP】特定の日時から現在まで何日経過したか出力する方法
特定の日時から現在まで何日かかったのかどうか、日付の差分を求めたかったときの備忘録
現在の日時を取得して、特定の日時から日付の差分を求める方法
DateTime
クラスを使って取得します
現在の日時の取得方法
現在日時の取得方法と出力方法(メモ)
date_default_timezone_set('Asia/Tokyo');
$today = new DateTime('now');
echo $today->format('Y年m月d日 H時i分s秒');
タイムゾーンを先頭で指定しているけど、
DateTime
クラスでは引数に設定することもできる
$today = new DateTime('now', new DateTimeZone('Asia/Tokyo'));
echo $today->format('Y年m月d日 H時i分s秒');
タイムゾーン設定しておかないと9時間くらいずれる
※ DateTimeクラスはphp.iniでタイムゾーンを指定するか、date_default_timezone_set()関数でタイムゾーンを指定しなければエラーとなります。
Link:phpで現在日時を取得する方法!
Memo:日時のフォーマットリンク
DateTimeクラスのメソッドdiffを使って差分を求める
diff
メソッドを使って特定の日時から現在までの総日数を求める
date_default_timezone_set('Asia/Tokyo');
$today = new DateTime('now');
$day = new DateTime('2017-11-12');
$diff = $day->diff($today);
echo $diff->format('ブログを初めて%d日です。');// ブログを初めて1042日です。
diff
を使って日数の差分を出す時にフォーマットでa
を使うことで総日数を出力できる
それか、
echo $diff->days;// 1042
とすることで数値のみ出力することもできる
フォーマットで
d
を使っていたら「7」って出てきちゃって調べたら「日」の差分だったa
を使うことで総日数を求めることができるLink:DateInterval::format
おまけ:strtotime()を使って差分を求める方法
DateTime
クラスを使う以外にstrtotime()
を使って日付の差分を求めることもできるんだけどDateTime
を使うことが推奨されているみたい
一応メモがてらstrtotime()
を使って、年始から今日まで何日経過しているか取得するコードを書いとく
date_default_timezone_set('Asia/Tokyo');
$today = date("Y-m-d");// 現在の日付け取得
$today = strtotime($today);// タイムスタンプへ変換
$day = strtotime('2020-01-01');
echo ($today - $day) / (60 * 60 * 24). '日';//262日(経過日数)
phpで日時を扱うときにstrtotimeを使ってタイムスタンプにする方法だと2038年問題って値がオーバーフローを起こして誤作動する可能性があるみたいだからDateTimeクラスを使っておいた方が良いみたい