PHPで日付を取得する方法:date関数

投稿日: 作成:   更新:

PHPで日付を取得するには「date関数、strtotime関数」を使います。

  • date関数の使い方が知りたい。
  • 今日の日付を取得したい。
  • 指定した日付を取得したい。
  • 「yyyy年mm月dd日」の形式で表示するには?

このような内容について解説します。

私はWEB開発中心に、フロントエンド、サーバーサイド、サーバー構築など経験豊富なエンジニアです。
少しでも分かりやすく解説していきたいと思います。

それでは行きましょう!

date関数とは

date(フォーマット文字)
date(フォーマット文字, タイムスタンプ)
引数 第1引数:日付、時間のフォーマット文字を指定します。(string)
「Y年m月d日」のように「Y, m, d, H, i, s」を使って指定が可能。
第2引数:UNIXタイムスタンプを指定します。(int)
基本的にstrtotime関数を併用して日付指定します。※省略可
省略すると現在日時が取得できます。
戻り値 指定フォーマット後の日付が返ります。(string)

date関数の使い方

次のソースコードでは、
今日の日付を「yyyy/mm/dd」と「yyyy年mm月dd日」形式で表示しています。

<?php

// 今日を「yyyy/mm/dd」形式で表示
echo date('Y/m/d') . '<br>';

// 今日を「yyyy年mm月dd日」形式で表示
echo date('Y年m月d日');

?>

実行結果:

第1引数だけ指定しているため、今日の日付が表示できました。

次に日付を指定して表示してみます。

指定日を表示する(絶対日付)

指定した日付を表示するには、strtotime関数と併用してdate関数の第2引数に指定します。

strtotime関数はUNIX時間に変換する関数です。

「2020年12月10日」を表示させるソースコードを書いてみます。

<?php

// 日付を指定
$st = strtotime('2020/12/10');

// 「yyyy年mm月dd日」形式で表示
echo date('Y年m月d日', $st);

?>

実行結果:

指定した日付「2020年12月10日」が表示できました。

3日後を表示する(相対日付)

3日後の日付を表示してみます。

先ほどのソースコードでstrtotime関数に「+3 day」を指定すると、3日後の日付が表示されます。

<?php

// 3日後を指定
$st = strtotime('+3 day');

// 「yyyy年mm月dd日」形式で表示
echo date('Y年m月d日', $st);

?>

実行結果:

3日後の日付が表示されました。

もし3日前であれば「-3 day」、1か月後は「1 month」を指定できます。

「+3 day」部分は定数化する

相対日付の指定は、strtotime関数に「year、month、day」など文字列をハードコーディングすることになります。

バグを引き起こす原因にもなりかねますので、
実際の開発では「+3 day」部分をまとめて定数化しておいた方が良いでしょう。

指定日を簡単にする独自関数を作ってみる

毎回、date関数とstrtotime関数を使うと、ソースコードの可読性が落ちます。

使用しているフレームワークに用意されていなければ、独自に日付を簡単取得できる関数を用意する方が良いでしょう。

次のソースコードでは、「yyyy年mm月dd日」形式を返す「getDateJp()」を独自に作ってみました。

<?php

// 指定した日付「yyyy年mm月dd日」形式で取得する
// 引数を省略したら現在の日付を返す
function getDateJp($strDate = '')
{
    $format = 'Y年m月d日';
    if ($strDate == '') {
        return date($format);
    }
    return date($format, strtotime($strDate));
}

// 呼び出し側
echo getDateJp('2020/12/10');

?>

これらの関数をプロジェクトの共通処理として1箇所にまとめておくと、
長々と書かなくてソースコード可読性がよくなります。

ですので、日付取得する独自関数を作りましょう。

まとめ

PHPのdate関数について解説しました。

  • date関数とは(フォーマット文字を指定)
  • date関数の使い方(今日を表示)
  • 指定日を表示する(絶対日付、strtotime関数にYmdを指定)
  • 3日後を表示する(相対日付、strtotime関数に+3 dayを指定、定数化する)
  • 指定日を簡単にする独自関数を作ってみる(可読性が良くなる)

date関数は頻繁に使用する関数ですので、使い方をしっかりと身につけましょう!