Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

超初心者が学ぶdate関数

More than 1 year has passed since last update.

自己紹介

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

kazuki5555
PHPとかLaravelとかDockerとかGCPとか PythonかじったりGoかじったり
https://kazuki5555.github.io/Portfolio/#/
cgate
クリーンなアドテクノロジーを目指して、安心して利用いただけるサービスを!
https://www.cgate.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away