web-wizardry

インターネット・スマホ、そしてテレビにwebの魔法をWizardry

PHP 文字列の年月日を今の日付と比較する方法

2015年12月31日 · PHP

PHPで年月日が書かれたデータと今の日付を比較して、
過去か未来か、そして今なのかというのをどう比較するのかを書いていきます

年月日が書かれた日付を分散させる

比較する為には年月日を年と月と日に分散させる必要があります。
以下の方法で分散された形になります

$getDate = "2015年12月31日";
preg_match( "/([0-9]*)年([0-9]*)月([0-9]*)日/", $getDate, $data );
var_dump($data);

配列でデータが格納されます。
以下がvar_dumpで出力した結果です
array(4) { [0]=> string(17) “2015年12月31日” [1]=> string(4) “2015” [2]=> string(2) “12” [3]=> string(2) “31” }
こちらから
$data[1]に2015
$data[2]に12
$data[3]に31
が格納されたことがわかります。
こちらを使用して次の処理へ移ります。

比較用の変数を用意

分散した日付と今の日付を比較していきます。
今の日付をdate関数で取得します。ことの時は「/」で年月日を取得します
※年月日で取得してしまうと比較がうまくいきません。
分散した日付を「/」付きで再度文字列の結合をおこないます。
分散した月と日は1〜9の場合に01などの表記にしないとエラーが発生してしまいます。
文字列の結合をする前に1〜9の数字の場合に0を追加する処理を入れておきます。

//今の日付を取得
$today = date("Y/m/d/");
//1~9は0を追加
if($data[2]<10){
  $data[2] = sprintf('%02d',$data[2]);
}
if($data[3]<10){
  $data[3] = sprintf('%02d',$data[3]);
}
//文字列の結合
$target_day = $data[1]."/".$data[2]."/".$data[3]."/";

分散した日付と今の日付を比較

各変数に格納された日付を比較します。
比較結果で、
今日なのか過去、未来を振り分けることができます。

if(strtotime($today) === strtotime($target_day)){
  echo "ターゲット日付は今日です";
}else if(strtotime($today) > strtotime($target_day)){
  echo "ターゲット日付は過去です";
}else{
  echo "ターゲット日付は未来です";
}

引用サイト

http://nanoappli.com/blog/archives/3041
http://qiita.com/konweb/items/233a7fefe3f33ec595ae


Page top