この記事では、
Unixタイムスタンプを日付文字列にするdate、
指定した日付をUnixタイムスタンプにするmktime、
現在の日付をUnixタイムスタンプにするtime、
英文形式の日付文字列をUnixタイムスタンプにするstrtotimeを説明します。
date
date関数は、1970年1月1日の0時0分0秒から、何秒経ったかで、
日付を表す「UNIXタイムスタンプ」を、
人間に読める文字列で示された日付の表記に変換する関数です。
書式文字一覧
書式文字は以下の一覧の通り膨大ですが、
最初に覚えるべきは、2桁の日付を表す「d」、
2桁の月を表す「m」、4桁の年を表す「Y」です。
出力例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?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重にエスケープする必要があります。
1 2 3 4 | <?php $date = date ( "l \\t\h\\e jS" ); echo $date ; ?> |
mktime
mktime関数は、日付をUnixのタイムスタンプとして取得します。
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?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の組み合わせ例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?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タイムスタンプを返します。
使用例
1 2 3 4 | <?php $tomorrow = time() + (24 * 60 * 60); echo date ( "Y-m-d" , $tomorrow ); ?> |
strtotime
strtotime関数は、英文形式の日付を Unix タイムスタンプに変換して返します。
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?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 ); ?> |