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

PHP

更新履歴

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

はじめに

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

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

時刻、日付の取得

時刻、日付の取得では、次の関数について説明します。

関数オブジェクト指向説明(PHPマニュアル抜粋)
date_createDateTime()新しい DateTime オブジェクトを返す
getdate日付・時刻を取得する
gettimeofday現在の時間を取得する

date_create/DateTime()

date_create()関数の内部でDateTime()を呼び出すため、DateTime()のエイリアス(別名)関数と呼ばれます。

これらの関数を使用したサンプルプログラムは次の通りです。
返却値がUNXIタイムスタンプのため、見やすくなるようにdate_format()、DateTime()->format()関数を使用しています。

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

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

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】関数<br>\n";
    echo "日付・時刻関数:date_create()、DateTime()<br>\n";
    
    echo "タイムゾーン指定なし(GWT時間)<br>\n";
    $dt1 = new DateTime();
    echo 'DateTime():現在時刻:' . $dt1->format("Y/m/d H:i:s.v") . "<br>\n";

    $dt2 = date_create();
    echo 'date_create():現在時刻:' . date_format($dt2, "Y/m/d H:i:s.v") . "<br>\n";
    echo "<br>\n";

    echo "タイムゾーン個別指定(Asia/Tokyo)<br>\n";
    $dt1 = new DateTime("now", new DateTimeZone("Asia/Tokyo"));
    echo 'DateTime():現在時刻:' . $dt1->format("Y/m/d H:i:s.v") . "<br>\n";

    $dt2 = date_create("now", new DateTimeZone("Asia/Tokyo"));
    echo 'date_create():現在時刻:' . date_format($dt2, "Y/m/d H:i:s.v") . "<br>\n";
    echo "<br>\n";

    // デフォルトのタイムゾーンの指定
    echo "デフォルトのタイムゾーン指定(Asia/Tokyo)<br>\n";
    date_default_timezone_set("Asia/Tokyo");

    $dt1 = new DateTime("2010/03/15 11:21:36");
    echo 'DateTime():指定時刻:' . $dt1->format('Y/m/d H:i:s') . "<br>\n";

    $dt2 = date_create("2010/03/15 11:21:36");
    echo 'date_create():指定時刻:' . date_format($dt2, "Y/m/d H:i:s") . "<br>\n";
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_04_05.php<br>
【PHP】関数<br>
日付・時刻関数:date_create()、DateTime()<br>
タイムゾーン指定なし(GWT時間)<br>
DateTime():現在時刻:2021/06/21 01:16:01.299<br>
date_create():現在時刻:2021/06/21 01:16:01.299<br>
<br>
タイムゾーン個別指定(Asia/Tokyo)<br>
DateTime():現在時刻:2021/06/21 08:16:01.299<br>
date_create():現在時刻:2021/06/21 08:16:01.299<br>
<br>
デフォルトのタイムゾーン指定(Asia/Tokyo)<br>
DateTime():指定時刻:2010/03/15 11:21:36<br>
date_create():指定時刻:2010/03/15 11:21:36<br>

getdate

getdate()関数のサンプルプログラムです。

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

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

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】関数<br>\n";
    echo "日付・時刻関数<br>\n";
    
    echo '現在の時刻の取得:getdate()' .  "<br>\n";
    $today = getdate();
    echo_array1_line($today);

    echo '指定時刻の取得:getdate(1055901520)' .  "<br>\n";
    $date = getdate(1055901520);        // int 型の Unix タイムスタンプを指定
    echo_array1_line($date);
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_04_01.php<br>
【PHP】関数<br>
日付・時刻関数<br>
現在の時刻の取得:getdate()<br>
[seconds]:0:<br>
[minutes]:34:<br>
[hours]:6:<br>
[mday]:20:<br>
[wday]:0:<br>
[mon]:6:<br>
[year]:2021:<br>
[yday]:170:<br>
[weekday]:Sunday:<br>
[month]:June:<br>
[0]:1624163640:<br>
<br>
指定時刻の取得:getdate(1055901520)<br>
[seconds]:40:<br>
[minutes]:58:<br>
[hours]:3:<br>
[mday]:18:<br>
[wday]:3:<br>
[mon]:6:<br>
[year]:2003:<br>
[yday]:168:<br>
[weekday]:Wednesday:<br>
[month]:June:<br>
[0]:1055901520:<br>
<br>

返却される配列の詳細は次のPHPマニュアルを見てください。

PHP: getdate - Manual

gettimeofday

gettimeofday()関数のサンプルプログラムです。

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

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

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】関数<br>\n";
    echo "日付・時刻関数<br>\n";
    
    echo '現在の時間の取得(配列):gettimeofday()' .  "<br>\n";
    $time = gettimeofday();
    echo_array1_line($time);

    echo '現在の時間の取得(数値):gettimeofday(true)' .  "<br>\n";
    echo ":" . gettimeofday(true).  ":<br>\n";        // int 型の Unix タイムスタンプで取得
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_04_02.php<br>
【PHP】関数<br>
日付・時刻関数<br>
現在の時間の取得(配列):gettimeofday()<br>
[sec]:1624164016:<br>
[usec]:179029:<br>
[minuteswest]:-120:<br>
[dsttime]:1:<br>
<br>
現在の時間の取得(数値):gettimeofday(true)<br>
:1624164016.1791:<br>

返却される配列の詳細は次のPHPマニュアルを見てください。

PHP: gettimeofday - Manual

コメント