【PHP】これで分かる関数! – 日付・時刻その3 –

PHP

更新履歴

更新日更新者更新内容
2021/8/21JJI・”はじめに”の段落を追加
・サンプルプログラムの実行結果に画面の画像を追加

はじめに

日付・時刻の配列を表示する場合、次の記事で載せている関数を使用している場合があります。

サンプルプログラムの実行結果に載せている画面とHTMLは違う時間で取得したため、実行結果の時間はずれています。

日付・時刻の形式変換

PHPでは、日付・時刻は次のUNIXのタイムスタンプで管理しています。
通算秒のため、日付・時刻が分かりにくいため、通常、プログラ通算秒を年月日のような形式に変換して使用します。

PHPでは次の日付・時刻を変換する関数が存在しています。
この記事では、次の関数についてサンプルプログラムを使って説明します。

関数オブジェクト指向説明(PHPマニュアル抜粋)
date_formatDateTime::format指定した書式でフォーマットした日付を返す
この関数は
dateローカルの日付/時刻を書式化する
strftimeロケールの設定に基づいてローカルな日付・時間を
フォーマットする
strptimestrftime() が生成した日付/時刻をパースする

date_format/DateTime::format

date_format()、DateTime::format()関数はそれぞれ、date_create()、DateTime()と一緒に使用することが多いです。
サンプルプログラム次の記事で見てください。

date_format()、DateTime::format()で指定可能な形式は次のPHPマニュアルを見てください。

PHP: DateTime::createFromFormat - Manual

また、指定可能なタイムゾーンは次のPHPマニュアルを見てください。

PHP: サポートされるタイムゾーンのリスト - Manual

date

date()関数はmktime()関数と一緒に使用することが多いです。
サンプルプログラムは次の記事を見てください。

strftime

strftime()関数を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);

    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】関数<br>\n";
    echo "日付・時刻関数:strftime()<br>\n";
    
    echo "タイムゾーン指定なし(GWT)<br>\n";
    echo '現在時刻:' . strftime("%Y/%m/%d %H:%M:%S") . "<br>\n";
    echo "<br>\n";

    echo "デフォルトのタイムゾーン指定(Asia/Tokyo)<br>\n";
    date_default_timezone_set("Asia/Tokyo");
    echo '現在時刻:' . strftime("%Y/%m/%d %H:%M:%S") . "<br>\n";
    echo "<br>\n";

    date_default_timezone_set("Asia/Tokyo");
    echo '22時:' . strftime("%Y/%m/%d %H:%M:%S", mktime(22)) . "<br>\n";
    echo "<br>\n";

    date_default_timezone_set("Asia/Tokyo");
    echo '22時10分37秒:' . strftime("%Y/%m/%d %H:%M:%S", mktime(22, 10, 37)) . "<br>\n";
    echo "<br>\n";

    date_default_timezone_set("Asia/Tokyo");
    echo '2021年7月23日9時10分37秒:' . strftime("%Y/%m/%d %H:%M:%S", mktime(9, 10, 37, 7, 23, 2021)) . "<br>\n";
    echo "<br>\n";
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_04_06.php<br>
【PHP】関数<br>
日付・時刻関数:strftime()<br>
タイムゾーン指定なし(GWT)<br>
現在時刻:2021/06/21 01:59:41<br>
<br>
デフォルトのタイムゾーン指定(Asia/Tokyo)<br>
現在時刻:2021/06/21 08:59:41<br>
<br>
22時:2021/06/21 22:59:41<br>
<br>
22時10分37秒:2021/06/21 22:10:37<br>
<br>
2021年7月23日9時10分37秒:2021/07/23 09:10:37<br>
<br>

strptime

strptime()関数は次のPHPマニュアルに書いているようにWindows環境では実装されていないため、動作確認ができていません。

PHP: strptime - Manual

コメント