PHPでは、date関数を使うことで日時情報を取得することができます。
そこで今回は、date関数の使い方はもちろん、date関数とセットで覚えたいstrtotime関数についても解説しています。
現在日時の取得だけでなく、指定日時や相対日時の取得方法についても紹介していますので、ぜひご覧ください。
目次
PHPのdate関数とは?
PHPプログラミングで使えるdate関数とは、現在日時もしくは指定日時を任意の形式にフォーマットし、日時情報を返す関数です。
date関数は、次のような形式で使うことができます。
1 |
date ( フォーマット文字列 [, UNIXタイムスタンプ ] ) |
第一引数には、日時情報を任意の形式にフォーマットした文字列を指定します。
第二引数にUNIXタイムスタンプを指定すると、指定したタイムスタンプをフォーマットした日時情報を返します。第二引数を指定しなかった場合は、現在の日時情報をフォーマットして返します。
なお、UNIXタイムスタンプとは、1970年1月1日からの秒数です。一見すると、ただ数字が羅列されているだけなので、UNIXタイムスタンプから日時情報を出力したい場合には、date関数などを利用する必要があります。
PHPのdate関数の使い方
それでは実際に、date関数を使って日時情報をフォーマットして出力してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php // 現在日付をフォーマットして出力 echo '日付情報)'; echo '<br>'; echo date('Y年m月d日'); echo '<br>'; echo date('Y/m/d'); echo '<br>'; echo date('y/m/d'); echo '<br>'; echo date('ymd'); echo '<br><br>'; // 現在日時をフォーマットして出力 echo '日時情報)'; echo '<br>'; echo date('Y年m月d日 H時i分s秒'); echo '<br>'; echo date('Y/m/d H:i:s'); echo '<br>'; ?> |
2021年01月14日
2021/01/14
21/01/14
210114
日時情報)
2021年01月14日 04時23分09秒
2021/01/14 04:23:09
上記サンプルコードでは、フォーマット文字と任意の文字列を組み合わせることで、日時情報を出力しています。
date関数で使えるフォーマット文字
date関数では、フォーマット文字と任意の文字列を組み合わせることで、日時情報を出力します。指定可能なフォーマット文字には、月や日の桁数を固定するものや時間を12時間単位で表示するものなど様々な文字が用意されています。
フォーマット文字 | 説明 | 例 |
---|---|---|
Y | 年。4桁の数字 | 2021 |
y | 年。2桁の数字 | 21 |
m | 月。数字(ゼロ詰め) | 01 |
n | 月。数字(ゼロなし) | 1 |
F | 月。英語 | January ~ December |
M | 月。英語(略称) | Jan ~ Dec |
d | 日。数字(ゼロ詰め) | 01 ~ 31 |
j | 日。数字(ゼロなし) | 1 ~ 31 |
l | 曜日。英語 | Sunday ~ Saturday |
D | 曜日。英語(略称) | Mon ~ Sun |
N | 曜日。数字 | 1(月曜日) ~ 7(日曜日) |
H | 時。24時間単位(ゼロ詰め) | 00 ~ 23 |
G | 時。24時間単位(ゼロなし) | 0 ~ 23 |
h | 時。12時間単位(ゼロ詰め) | 01 ~ 12 |
g | 時。12時間単位(ゼロなし) | 1 ~ 12 |
A | 午前または午後(大文字) | AM または PM |
a | 午前または午後(小文字) | am または pm |
i | 分(ゼロ詰め) | 00 ~ 59 |
s | 秒(ゼロ詰め) | 00 ~ 59 |
上記は、使われる機会の多い代表的なフォーマット文字です。他にも、「うるう年かの判定」や「その年の週番号」などを取得することができます。
フォーマット文字を組み合わせることで、システム内部で利用できる一意の数字文字列を作成することもできます。フォーマット文字を組み合わせて、希望する形式でフォーマットされた日時情報を取得できるようになりましょう。
PHPのdate関数で指定日時の情報をフォーマットする
PHPのdate関数は、第二引数にUNIXタイムスタンプを指定することで、指定日時の情報をフォーマットすることができます。このUNIXタイムスタンプを取得する場合に使用する関数が、strtotime関数です。
それでは実際に、strtotime関数を使ってUNIXタイムスタンプ情報を取得し、指定日時の情報をdate関数でフォーマットしてみましょう。
1 2 3 4 5 6 7 8 9 10 |
<?php // 2021年1月1日のUNIXタイムスタンプを取得 $timestamp = strtotime('2021-1-1 00:00:00'); echo 'タイムスタンプ:' .$timestamp .'<br>'; // date関数でフォーマットして出力 echo date('Y年m月d日 H時i分s秒', $timestamp); ?> |
2021年01月01日 00時00分00秒
上記サンプルコードでは、strtotime関数で取得した「2021年1月1日」のUNIXタイムスタンプを、date関数の第二引数に指定して出力しました。
PHPのdate関数とstrtotime関数で相対日時を出力する
PHPのdate関数とstrtotime関数を利用することで、相対的な日時情報をフォーマットして出力することができます。
参考として、現在の日付と一週間後の日付を出力するソースコードをみてみましょう。
1 2 3 4 5 6 7 8 9 10 11 |
<?php echo date('今日は「Y年m月d日」です。'); echo '<br>'; // 現在日時から一週間後のUNIXタイムスタンプを取得 $timestamp = strtotime('+7 day'); echo date('一週間後は「Y年m月d日」です。', $timestamp); ?> |
一週間後は「2021年01月21日」です。
上記サンプルコードのように、strtotime関数では相対的なUNIXタイムスタンプを取得することもできます。
また、strtotime関数の第二引数にタイムスタンプを指定することで、そのタイムスタンプからの相対日時を取得することもできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php // UNIXタイムスタンプを取得 $timestamp = strtotime('2021-1-10 00:00:00'); // 第二引数のUNIXタイムスタンプから10日後のUNIXタイムスタンプを取得 $timestamp = strtotime('+10 day',$timestamp); echo date('入会後10日間限定キャンペーンは「Y年m月d日 」に終了します。', $timestamp); echo '<br>'; echo date('本日は「Y年m月d日」です。'); ?> |
本日は「2021年01月14日」です。
上記サンプルコードでは、最初に「2021年1月10日」のUNIXタイムスタンプを取得し、そこから10日後のタイムスタンプを取得しました。
strtotime関数を使えば、指定日時に対する相対的な日時情報を取得することができます。
まとめ
PHPのdate関数を使えば、日時情報を任意の形式にフォーマットして取得できます。第二引数を指定することで、指定した日時の情報をフォーマットすることもできます。ただし、指定する日時はUNIXタイムスタンプである必要があります。
UNIXタイムスタンプを取得するには、strtotime関数を使いましょう。strtotime関数を使えば、現在日時や指定日時から相対的な情報を取得することも可能です。
strtotime関数とdate関数の使い方をマスターして、PHPの日時情報を自由に取得できるようになりましょう。