phpでは、いろいろと日付を表示する方法があります。改めて調べてみたのでまとめてみました。
基本形としては、
date('表示形式', タイムスタンプ=省略可能)
となります。通常は date('Y-m-d') などとタイムスタンプを省略して現在時刻でのタイムスタンプ、つまりtime()で表示される値をそのまま使う場合が多いかと思います。ここでの表示形式をまずは一覧してみます。
| Y |
| y |
| o |
| L |
| m |
| n |
| F |
| M |
| t |
| d |
| j |
| z |
一部初めてみる表記もありました。続いて時刻
| g |
| G |
| h |
| H |
| i |
| s |
さらに
| a |
| A |
| D |
| I |
| N |
| W |
とここまではゴリゴリやる場合。さらに以下のような定数があって使える。この場合は、 date(DATE_ATM) といった形式で使います。クオートで囲まないように注意。
| DATE_ATOM |
| DATE_COOKIE |
| DATE_ISO8601 |
| DATE_RFC822 |
| DATE_RFC850 |
| DATE_RFC1036 |
| DATE_RFC1123 |
| DATE_RFC2822 |
| DATE_RFC3339 |
| DATE_RSS |
| DATE_W3C |
<?php
echo date(DATE_ATOM),"\n";
echo date(DATE_COOKIE),"\n";
echo date(DATE_ISO8601),"\n";
echo date(DATE_RFC822),"\n";
echo date(DATE_RFC850),"\n";
echo date(DATE_RFC1036),"\n";
echo date(DATE_RFC1123),"\n";
echo date(DATE_RFC2822),"\n";
echo date(DATE_RFC3339),"\n";
echo date(DATE_RSS),"\n";
echo date(DATE_W3C),"\n";
//実行結果
2021-06-06T13:26:43+00:00
Sunday, 06-Jun-2021 13:26:43 UTC
2021-06-06T13:26:43+0000
Sun, 06 Jun 21 13:26:43 +0000
Sunday, 06-Jun-21 13:26:43 UTC
Sun, 06 Jun 21 13:26:43 +0000
Sun, 06 Jun 2021 13:26:43 +0000
Sun, 06 Jun 2021 13:26:43 +0000
2021-06-06T13:26:43+00:00
Sun, 06 Jun 2021 13:26:43 +0000
2021-06-06T13:26:43+00:00
とここまで記載しておいて何なのですが、今どきのPHPではDateTimeクラスが用意されています。日付表示だけでなく差分などのメソッドも多数用意されているので便利です。多国語対応などを考えると今後は、こちらを使うべきでしょうね。
<?php
$dt = new DateTime();
//フォーマットは上記のこれまで使ってきたものが使えるようです
echo $dt->format(DATE_ATOM) . "\n";
//日付の計算
$interval = DateInterval::createFromDateString('-10 months');
echo $dt->add($interval)->format('Y-m-d') . "\n";
//タイムゾーン指定
$dt= new DateTime('now', new DateTimeZone('Asia/Tokyo'));
echo $dt->format('Y-m-d H:i:s'), "\n";
//別のタイムゾーンに変換すると
echo $dt->setTimeZone(new DateTimeZone('Europe/London'))->format('Y-m-d H:i:s') , "\n";
//diff計算も簡単
$dt1 = new DateTime('1970-08-13');
$dt2 = new DateTime('now');
echo $dt1->diff($dt2)->format('きっと%Y歳') . "\n";