気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHP関数
  2. 69 view

date関数で日付や時刻が正しく表示されないとき

原因1:タイムゾーンの設定が間違っている

date関数で表示した時刻が正しく表示されない場合は、タイムゾーン(地域ごとの時間帯)の設定が原因かもしれません。たとえば、タイムゾーンの設定が東京ではなく欧米などになっていると、現在の時刻が9時なのに、date関数を実行すると2時や5時などと表示されてしまいます。XAMPPをインストールして何も設定していない場合は、「date.timezone = Europe/Berlin」などと設定されている可能性があります。

次のようなエラーメッセージが表示されることもあります。「タイムゾーンを設定してください」という意味です。

——————————
Warning: date() [function.date]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Tokyo’ for ‘9.0/no DST’ instead in xxxxx.php on line xxxxx
——————————

 タイムゾーンを「東京」に設定するには、PHP設定ファイル(php.ini)を開いて「date.timezone」という項目に「Asia/Tokyo」と指定します。

○タイムゾーンを設定する(php.ini)
date.timezone = Asia/Tokyo

date_default_timezone_set関数を使ってPHPスクリプトの中で設定することもできます。

<?php
date_default_timezone_set('Asia/Tokyo');
echo "東京(協定世界時+9時間):" . date("Y/m/d H:i:s");
?>
<hr />
<?php
date_default_timezone_set('UTC');
echo "UTC(協定世界時):" . date("Y/m/d H:i:s");
?>
タイムゾーンを設定する

タイムゾーンを設定する

原因2:mktime関数のパラメータ順が間違っている

date関数で処理するタイムスタンプの取得にmktime関数がよく使われます。

mktime関数では、取得するタイムスタンプの日時を年・月・日・時・分・秒のパラメータで指定しますが、この順番は、時・分・秒・月・日・年です。

特に、右側3つの「月・日・年」を「年・月・日」の順に間違えてしまうと、次のように意図した日付を取得することができません。

<?php
echo date("Y/m/d", mktime(0, 0, 0, 2012, 10, 31));
?>

○実行結果

1970/01/01
<?php
echo date("Y/m/d", mktime(0, 0, 0, 10, 31, 2012));
?>

○実行結果

2012/10/31

PHP関数の最近記事

  1. mb_send_mail関数でReturn-Pathを設定する方法

  2. is_numeric関数とis_int関数の違い

  3. PHPのdate関数の使用例

  4. isset関数とempty関数と「!」の違い

  5. 文字列を分割して配列を作成するexplode関数

関連記事

PAGE TOP