Developer

【PHP基礎】様々な関数⑥ 日付操作関数 date mktime time strtotime
2020.12.31
Lv1

【PHP基礎】様々な関数⑥ 日付操作関数 date mktime time strtotime

この記事では、
Unixタイムスタンプを日付文字列にするdate、
指定した日付をUnixタイムスタンプにするmktime、
現在の日付をUnixタイムスタンプにするtime、
英文形式の日付文字列をUnixタイムスタンプにするstrtotimeを説明します。

date

date関数は、1970年1月1日の0時0分0秒から、何秒経ったかで、
日付を表す「UNIXタイムスタンプ」を、
人間に読める文字列で示された日付の表記に変換する関数です。

書式文字一覧

書式文字は以下の一覧の通り膨大ですが、
最初に覚えるべきは、2桁の日付を表す「d」、
2桁の月を表す「m」、4桁の年を表す「Y」です。



出力例

<?php
//「2020年1月1日1時23分45秒」の形式
$date1=date("Y年n月j日G時i分s秒");
//「2020/01/0101:23:45」の形式
$date2=date("Y/m/dH:i:s");
//「01:23:45AM」の形式
$date3=date("h:i:sA");
//今日の曜日(Sunday~Saturday)
$date4=date("l");
//表示
echo$date1;
echo"<hr>";
echo$date2;
echo"<hr>";
echo$date3;
echo"<hr>";
echo$date4;
?>

エスケープ

フォーマット文字列で定義されている文字を出力する場合、バックスラッシュを付けてエスケープする必要があります。
さらに「\t」などの特別な意味を持つ文字に関しては、「\\t」のように2重にエスケープする必要があります。

<?php
$date = date("l \\t\h\\e jS");
echo $date;
?>

mktime

mktime関数は、日付をUnixのタイムスタンプとして取得します。

使用例

<?php
// 1970年1月1日 10時0分0秒 
$ts1 = mktime(10, 0, 0, 1, 1, 1970);
echo $ts1;
echo "<hr>";
// 以下は同じ
$ts2 = mktime(0, 0, 0, 2, 29, 2020);
$ts3 = mktime(0, 0, 0, 3, 0, 2020);
$ts4 = mktime(-24, 0, 0, 3, 1, 2020);
echo $ts2."<br>\n";
echo $ts3."<br>\n";
echo $ts4;
?>

mktimeとdateの組み合わせ例

<?php
// 2020年4月1日
$ts1 = mktime(0, 0, 0, 4, 1, 2020);
echo date("Y年m月d日", $ts1);
echo "<hr>";
// 明日の日付
$ts2 = mktime(0, 0, 0, date("m"), date("d") + 1, date("Y"));
echo date("Y年m月d日", $ts2);
echo "<hr>";
// 今月の1日
$ts3 = mktime(0, 0, 0, date("m"), 1, date("Y"));
echo date("Y年m月d日", $ts3);
echo "<hr>";
// 今月の最終日
$ts4 = mktime(0, 0, 0, date("m") + 1, 0, date("Y"));
echo date("Y年m月d日", $ts4);
?>

time

time関数は、現在のUnixタイムスタンプを返します。

使用例

<?php
$tomorrow = time() + (24 * 60 * 60);
echo date("Y-m-d", $tomorrow);
?>

strtotime

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

使用例

<?php
$now = strtotime("now");
$tomorrow = strtotime("tomorrow");
$lastday = strtotime("last day of next month");
$aprilfool = strtotime("2020/4/1");
$sunday = strtotime("next sunday");
$plus5day = strtotime("+5 day");
echo date("Y/m/d", $now);
echo "<hr>";
echo date("Y/m/d", $tomorrow);
echo "<hr>";
echo date("Y/m/d", $lastday);
echo "<hr>";
echo date("Y/m/d", $aprilfool);
echo "<hr>";
echo date("Y/m/d", $sunday);
echo "<hr>";
echo date("Y/m/d", $plus5day);
?>

PHP基礎 連載目次リンク

PHP基礎 連載目次