実務でLaravelを使って日付検索をしたことがあるので、ここで共有+アウトプットをしておく。
リクエストで文字列で渡ってきた日付を操作する必要があったのですが、簡単に調べてみるとdate関数とstrtotime関数を使えば簡単にできそう
###date関数とstrtotime関数とは
公式より引用date関数
公式より引用strtotime関数
- date関数・・・ ローカルの日付/時刻を書式化する。
指定された引数 timestamp を、与えられた フォーマット文字列によりフォーマットし、日付文字列を返します。 タイムスタンプが与えられない場合は、現在の時刻が使われます。
date ( string $format [, int $timestamp = time() ] ) : string
つまり第一引数のフォーマットにしたがって、第2引数のtimestampが日付文字列で変換される模様。
- strtotime関数・・・英文形式の日付を Unix タイムスタンプに変換する
この関数は英語の書式での日付を含む文字列が指定されることを期待しており、 now で与えられたその形式から Unix タイムスタンプ (1970 年 1 月 1 日 00:00:00 UTC からの経過秒数) への変換を試みます。 now が指定されていない場合は現在日時に変換します。
strtotime ( string $datetime [, int $now = time() ] ) : int
こちらは文字列型の日付をint型の時間で返す模様。
ここの第1引数で様々な操作ができます。
月、週、日付、時間など
ここではある日にちを第一引数としたものを1日追加してみましょう
$day = "2020-11-12";
echo strtotime($d . "+1 day"); //1605225600
という具合です。
なのでstrtotimeで文字列型の日付を一度操作して、date関数の第二引数に当てはめます。
$day = "2020-11-12";
echo date( "Y-m-d", strtotime($d . "+1 day")); //2020-11-13
という感じでリクエストで渡ってきた日付の文字列を操作できました。
使うこともあるかと思うので、是非参考にしてみてください。
ここでは紹介しませんがCarbon
ライブラリというのもあるみたいなので、そちらも調べてみるといいかもです。
最後まで読んでいただきありがとうございました。
###参考文献
strtotime関数
date関数
qiita記事