phpでの日付の取得の色々
ね、ねむすぎる...
うとうとしながら仕事で対面したphpで日付操作について。
月末とか昨日とか未来とかを簡単に取得したい
てな訳で、phpのデフォルト関数 date()を使いたいと思います。
date関数
基本
引数に取得したい形式と項目を文字列で渡す
項目についてはphpであらかじめ決められた文字があるのでそれを渡してやれば解釈してくれる。
戻り値は 形式にそった日付が帰ってくる
実例
[php]
//今日の日付を年月日で出す $timeの中は 2015-01-14
$time = date( 'Y-m-d' );
//今日の日付 日本語でも出来る $timeの中は 2015年01月14日 $time = date( 'Y年m月d日' );
//今日の日付 Dで英語だけど曜日も出せる 2015-01-14 wed $time = date ( 'Y-m-d D' );
//今日の日時 hは12時間表記で時を、iは分を0詰めで、sは秒を0詰めで 2015-01-14 11:01:11 $time = date ( 'Y-m-d h:i:s' );
[/php]
応用
別の関数と組み合わせると色々便利な事が出来るようになる。
strtotime関数と組み合わせる事で、過去の日付を求めたりするのが楽になる。
strtotime関数の詳しい説明はこちらの記事の下部にある。
strtotime関数は一つの引数に日付の形をした文字列と指定した日数を渡すことで計算した時刻のタイムスタンプを返す。
具体的にはこんな感じ。
[php]
//日付の形をした文字列は省略できる。その場合は現在の日時がデフォルトになる。
//これは$timeの中には明日の日時がタイムスタンプ形式で入っている
$time = strtotime('+1 day');
//日付の形をした文字列を入れるとその日時から、指定の日時を計算出来る
//date関数の後はカンマでは無く必ずドットで"つなげる"。あくまで一つの引数として渡すから。
//$timeの中には先月の最初の日時が入っている
$time = strtotime(date('Y-m-01') . ' -1 month' );
[/php]
つまりstrtotime関数を使えば日付の計算が非常に楽になるが、タイムスタンプ形式なのでこのままでは良く無い。
それをdate関数で任意の日付の形に直す。
実例
[php]
//今日が2015年の1月15日だとして
//$timeには先月の最初の日時が入っている 14-12-01
$time = date( 'Y-m-d', strtotime( date('Y-m-01') . '-1 month' ) );
//$timeには昨日の日時が入っている 15-01-14
$time = date ( 'Y-m-d', strtotime( date('Y-m-d') . '-1 day' ) );
//$timeには先月末の日時が入っている 14-12-31
$time = date( 'Y-m-t' , strtotime(date('Y-m-01') . '-01 month') ); [/php]
このようにdate関数とstrtotime関数を使えば組み合わせで日付の操作は大体出来る。
終わりに
仕事で割と期間を区切って集計とかするようになったので良く使うようになった。
まじで扱いが楽だから便利だなー