PHP

【PHPの基礎】date関数をマスターしよう!

date関数
今回解決できる内容!

✔️PHPを使って日付を抽出したい!

✔️date関数について学びたい!

今回はdate関数のご説明を致します。開発を進めていくと、日付に対するPHPの考え方を要求される場面が多々あります。

date関数を使えばさまざな日付操作や日付の比較を行うことができます。

是非ここでマスターしましょう!

関数の基礎に関しては下記の記事を参考にして下さい!

関数
【PHPの基礎】関数をマスターしよう! 今回解決できる内容! ✔️関数とはなんだろう? ✔️関数の使い方は? ...

独学がつらくなった方は下記をご覧ください!

>>【初心者必見!】無料体験ができるプログラミングスクールをご紹介!

UNIXタイムスタンプ

date関数のお話の前にまずはUNIXタイムスタンプを理解しましょう

UNIXタイムスタンプとは「協定世界時(UTC)を基準にした1970年1月1日の0時0分0秒からの経過秒数」を示しています。

これを使うことで、ある時点からある時点までの経過時間を秒で求めることが出来ます。

タイムスタンプの取得方法

タイムスタンプを取得するにはいくつか方法があります

①time関数

 

②mktime関数

 

③strtotime関数

それぞれ解説していきます。

①time関数とは

time関数は現在のタイムスタンプを取得することができます。

使い方は下記の通りです。

time();

実際にtime関数を使ってみましょう!

サンプルコード

<?php

echo time();

?>

結果は下記の通りです。

こちらが現在のタイムスタンプになります。

②mktime関数とは

mktime関数は指定日時のタイムスタンプを取得することができます。

書き方は下記の通りです。

mktime(時,分,秒,月,日,年);

それでは実際にmktime関数を使ってみましょう!

例えば 2021年3月3日 3時3分3秒は下記のように記載します。

サンプルコード

<?php

echo mktime(3,3,3,3,3);

?>

結果は下記の通りです。

③strtotime関数とは

strtotime関数とはmktime関数と同様で指定日時のタイムスタンプを取得することができます。

strtotime関数は、英文形式の日付をタイムスタンプに変換して返します。

書き方は下記の通りです。

strtotime(英文形式の日付);

strtotimeで日付と時間まで指定できます!

それでは実際にstrtotime関数を使ってみましょう!

mktime関数と同様に2021年3月3日 3時3分3秒のタイムスタンプを確認してみましょう!

サンプルコード

<?php

echo strtotime("2021-03-03 03:03:03");

?>

結果は下記の通りです。

mktime関数と値になりました!

現在時間から相対的な時間をタイムスタンプに変換する

strtotimeに現在時刻からの相対的な日時のタイムスタンプを取得したい場合は第一引数を相対日時を指定する「英文」で書きます。

具体例を見てみましょう!

サンプルコード

<?php

echo strtotime("now")."<br>"; //現在 time()と同義
echo strtotime("+3 day")."<br>"; //3日後 +は省略化
echo strtotime("-8 day")."<br>";  //8日前
echo strtotime("3 week")."<br>";  //3週間後
echo strtotime("3 week 4 day 5 hours 10 second");//3週間4日5時間10秒後

?>

結果は下記の通りです。

date関数とは

本題のdate関数です。

date関数とはタイムスタンプを日付文字列で返すことができる関数です。タイムスタンプとは先ほどご説明した、UNIXタイムスタンプのことです。

書き方は下記の通りです。

<?php

date(フォーマット形式[,タイムスタンプ]);

?>

第2引数のタイムスタンプは省略可能です。省略すると現在の日付のタイムスタンプを自動的に取得します。

実際の例を見てみましょう!

サンプルコード

<?php

 //現在の日時を取得
 echo date('Y/m/d', time());
 echo '<br>';
 echo date('Y/m/d');
 
?>

結果は下記の通りです。

2つ目の構文では第2引数のタイムスタンプを省略しましたが、time関数を引数に取ったときと同じ日付を表示しています。

フォーマットの際に使用される文字列は下記の通りです。

項目フォーマット説明
Y西暦(4桁)

y西暦(2桁)
m月(2桁)

n月(先頭の0なし)

M英語(略語)

F英語
d日(2桁)

j日(先頭の0なし)

tその月の日数

zその年の経過日数
曜日・週D英語(略語)

l英語

w曜日 (日曜0→土6)

Wその年の経過週 (月曜開始)
時間H24時間単位

G24時間単位 (先頭の0なし)

h12時間単位

g12時間単位 (先頭の0なし)

a午前/午後(小文字)

A午前/午後(大文字)
i分(2桁)
s秒(2桁)

月末、月初の取得方法は下記の記事を参考にして下さい!

>>【PHPの基礎】月初日と月末日の取得方法をマスターしよう!

独学でツラくなった方へ

まとめ

今回説明した内容

✅PHPを使って日付を抽出する方法

✅date関数の基礎

今回の説明は以上になります!

date関数は実際の開発でも大変よく使われます。タイムスタンプの考え方も大変重要なので、是非今回でマスターしましょう!