自己紹介
2018年新卒の文系出身未経験エンジニアです。
背景
社内本棚管理ツールを作成していた際に、借りた日から2週間後の日付を出力したい画面がありました。
それの勉強メモ。
date関数
書いたコードはこちらです。
private function returnDate($id)
{
$sql = 'UPDATE book SET return_date = :return_date WHERE id = :id';
$sth = $this->pdo->prepare($sql);
$sth->execute([':return_date' => date('Y-m-d', strtotime('+2 week')), ':id' => $id]);
}
executeする場面で配列を用いて':return_date'にdate関数で作成した2週間後の日付を当てはめています。
date関数とは?
公式の内容を初心者なりに噛み砕いて説明すると、
こちらが指定した書き方に従って日付、時刻を出してくれる関数。基本は現在の日付、時刻だがオプションで出力するものは指定することもできる
という認識です。
次は上記の書き方とオプションについてのまとめです。
format
書き方とはformatのことを指します。
このformatはたくさんあるのですが、これを指定してあげることで好きな出力形態を選べます。
以下はよく使うだろうと思うものを個人的に抜粋しました。
| format | 説明 | 例 |
|---|---|---|
| d | 日。二桁の数字(先頭にゼロがつく場合も) | 01 ~ 31 |
| D | 曜日。3文字形式。 | Mon ~ Sun |
| j | 日。先頭にゼロをつけない。 | 1 ~ 31 |
| l (小文字の 'L') | 曜日。フルスペル形式。 | Sunday ~ Saturday |
| F | 月。フルスペルの文字。 | January ~ December |
| m | 月。数字。先頭にゼロをつける。 | 01 ~ 12 |
| M | 月。3文字形式。 | Jan ~ Dec |
| n | 月。数字。先頭にゼロをつけない。 | 1 ~ 12 |
| Y | 年。4桁の数字。 | 2018 |
| y | 年。2桁の数字。 | 18 |
| a | 午前、午後(小文字) | am , pm |
| A | 午前、午後(大文字) | AM , PM |
| g | 時。12時間単位。先頭にゼロを付けない。 | 1 ~ 12 |
| G | 時。24時間単位。先頭にゼロを付けない。 | 0 ~ 23 |
| h | 時。数字。12 時間単位。 | 01 ~ 12 |
| H | 時。数字。24 時間単位。 | 00 ~ 23 |
| i | 分。先頭にゼロをつける。 | 00 ~ 59 |
| s | 秒。先頭にゼロをつける。 | 00 ~ 59 |
僕の書いたコードでは、出力形態を年(4桁)-月(2桁)-日(2桁)にしたかったので引数にはY-m-dを渡しています。
オプション
date関数の第2引数にstrtotimeを用いることで、strtotimeの引数から見た日時を出力することができます。
僕の書いたコードでは現在から2週間後を指定したかったため、strtotime(+2 week)を渡しています。
strtotimeの書き方はたくさんパターンがあるようなので公式の例を見ると多く参考になるかと思います。
感じたこと
意外と簡単に指定できるのだと感じた。この勉強に関しても使い続けないと慣れてはこないと思うので、新たなパターンを利用するたびに更新していこうと思います。
参考文献・引用
[PHP公式 strtotime] http://php.net/manual/ja/function.strtotime.php
[PHP公式 date] http://php.net/manual/ja/function.date.php