このブログの投稿数ももう少しで150近くになりました。
で、9割以上がJavaなんですが、私はPHPのスクールを運営しています(笑)
ということでPHPのスキルを忘れてはいけないということで、今日はちょっとPHPの日付関数の復習なんかをします。
Contents
日付関数
Javaと比べるとここら辺の扱いが非常に楽ですね。
まあJavaもライブラリ入れれば問題ないんですけど、PHPだと標準で簡単な関数がいっぱい組み込まれているので、簡単にスクリプトが書けます。
基本的には表示はdate,操作はstrtotimeでいいと思います。
date
timestampを与えて、日付を表示します。
date(“Y-m-d” ,タイムスタンプ)みたいな。
公式のdateの説明 http://php.net/manual/ja/function.date.php
で、タイムスタンプなんてどうやってつくんのさーということころで便利なのがstrtotimeです。
strtotime
ちょっと前まではmktime使ってたんですけど、先輩にそんなもん使うなーといわれ今ではほぼこれ一択です。
このライブラリが結構すごくて引数に直でyyyy/MM/ddを入れたり+1month(1か月後)みたいなのを文字として書けちゃうところです。
公式のstrtotimeの説明 http://php.net/manual/ja/function.strtotime.php
サンプルパターン
現在日付からn日の取得
1 2 3 4 |
echo "1日前" . date("Y/m/d", strtotime("-1 day" )); echo "1ヶ月前" . date("Y/m/d", strtotime("-1 month")); echo "1年前" . date("Y/m/d", strtotime("-1 year" )); echo "1週間前" . date("Y/m/d", strtotime("-1 week" )); |
上記はマイナスをプラスにかえれば当然n日後などになります。
1 2 3 4 |
echo "1日前" . date("Y/m/d", strtotime("2007/12/20 -1 day" )); echo "1ヶ月前" . date("Y/m/d", strtotime("2007/12/20 -1 month")); echo "1年前" . date("Y/m/d", strtotime("2007/12/20 -1 year" )); echo "1週間前" . date("Y/m/d", strtotime("2007/12/20 -1 week" )); |
日付の入力はyyyy-MM-ddでもOK
2つの日付の大小を判定する
1 |
echo ( strtotime('2011-08-12') > strtotime('2011-01-12')); |
など
ちなみに今の時間を表記するときはstrtotime(“now”)でOK
2つの日付の差(何日間あるか)を求める
1 |
echo (strtotime('2009-10-13') - strtotime('2009-10-11')) / ( 60 * 60 * 24); |
また日付の関数はタイムゾーンが設定されていないと動かないことがあります。
その場合、php.iniをいじればいいのですが、設定ファイルをいじるのが怖い場合は下記のようにプログラムの冒頭部分に書いておけばOKです。
1 |
ini_set('date.timezone', "Asia/Tokyo") |