【PHP入門】timezoneの設定方法をわかりやすく解説!

PHPではプログラムの動作設定や、タイムゾーンなどの環境設定をすることができます。

この記事では、

・タイムゾーンとは
・タイムゾーンの種類
・php.iniでタイムゾーンを設定する方法

という基本的な内容から、

・timezone関連のWarningやErrorが発生した場合
・date_default_timezone_set関数で設定する方法

などの、より詳細な内容についても解説していきます。

今回はそんなtimezoneについて、わかりやすく解説します!

タイムゾーン(timezone)とは

タイムゾーンとは、同じ標準時刻を使用する地域や区分のことを指します。

インターネットに接続されているコンピューターは世界中にあるため、それぞれの地域が異なるタイムゾーンを使用すると、システムや通信に影響を及ぼしてしまいます。

そのため、コンピューターやプログラムで管理している時刻を同じタイムゾーンに合わせる必要があります。

ちなみに世界共通で使用されている時刻はUTC(協定世界時)と呼ばれ、日本の標準時(JST)より9時間進んでいるため、「UTC+09:00」と表示されます。

そんなタイムゾーンですが、PHPでは設定ファイル(php.ini)からさまざまな地域のタイムゾーンを指定することが可能です。

タイムゾーンの種類

PHPではさまざまな地域のタイムゾーンがサポートされています。

PHPでサポートされているタイムゾーンを確認するには、DateTimeZoneクラスのlistIdentifiers()メソッドを使用すると便利です。

サンプルプログラム

実行結果:

listIdentifiersの結果は配列で返すのでforeach文で要素ごとに表示していけば、一覧で表示されます。

次項よりPHPのタイムゾーンの設定方法について、詳しく解説していきます。

タイムゾーンの設定方法(php.ini)

PHP.iniのtimezoneを設定する

PHPではプログラムが動作する環境を詳細に設定できる「php.ini」があります。

php.iniは、使用している環境によって格納場所が異なります。

格納場所を確認する簡単な方法は、phpのソースファイルに以下を記述して、ブラウザ上で実行すればphpinfoの画面が表示されます。

phpinfoの画面が表示されたら、「Configuration File (php.ini) Path」の項目を確認するとphp.iniの格納場所が記載されています。

phpini

php.iniからタイムゾーンを設定するには、

カテゴリ[Date]の中にdate.timzoneの項目がありますので、設定値を “Asia/Tokyo”に変更します。

なお、php.iniを編集する場合は必ずファイルのバックアップを取得してから、編集を実施してください。

<変更前>

<変更後>

php.iniを編集したら設定を反映するために、使用しているWebサーバを再起動します。

設定したタイムゾーンが反映されているか、確認するためには「PHPの設定ファイル」で説明したphpinfoの画面より「date.timezone」の項目から値を確認することができます。

datetimezone

現在時刻を確認する方法

設定したタイムゾーンでの現在時刻が取得できるか、確認するためにはdate関数を使用します。

dateの引数に出力するフォーマットを指定すれば、指定したフォーマットで日時が出力されます。

使用している環境によっては、現在時刻が9時間ずれてしまう問題があります。

もし、時間がずれていたら応急処置としてstrtotimeを使用して、以下のように時刻の差分を設定する方法もあります。

日付のフォーマット指定については、以下の記事でも詳しく解説しています!

【PHP】DateTimeでの日時取得とフォーマット方法まとめ
更新日 : 2018年5月15日

WarningやErrorが発生した場合

PHPのログファイル(php_error.log)を確認すると、稀に以下のようなログが出力されていることがあります。

PHP Warning: date(): It is not safe to rely on the system’s timezone settings. You are required 〜

このような警告メッセージが出力されている場合、php.iniの設定が正しくされていない可能性がありますので、設定ファイルの見直しや、前述したphpinfoの画面からタイムゾーンの設定を確認してみましょう。

以下のようにdate.timezoneが“no value”となっている場合はタイムゾーンが正しく設定されていません。

novalue

関数を使用したタイムゾーンの設定

date_default_timezone_set関数

タイムゾーンは、php.iniファイル以外にも、date_default_timezone_set関数を使用して設定することも可能です。

以下に、date_default_timezone_set関数でタイムゾーンを設定する方法を紹介します。

サンプルプログラム

実行結果:

date_default_timezone_set関数については、以下の記事でも詳しく解説していますので、ぜひ参考にしてください!

時刻を扱うdate関数について

日付を扱うdate関数については、以下の記事で詳しくまとめていますのでぜひ参考にしてくださいね!

主な内容として、

・date関数とは
・date関数の基本的な使い方
・strtotime関数の基本的な使い方
・日付のフォーマットを指定する方法
・タイムゾーンの指定方法
・日付を比較する方法
・曜日を取得する方法

などを解説しています!

現役PHPプログラマが伝授!date関数で日時を自由に扱おう
更新日 : 2019年4月11日

まとめ

ここではPHPのタイムゾーン(timezone)について、

・タイムゾーンとは
・タイムゾーンの種類
・php.iniでタイムゾーンを設定する方法
・WarningやErrorが発生した場合
・date_default_timezone_set関数で設定する方法

などについて解説しました。

PHPで開発するWebサービスは、多くの場合時刻を管理していますので、タイムゾーンの設定についてはしっかりと覚えておきましょう。

もし、タイムゾーンの設定方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説