PHPで時刻表示させる方法、タイムゾーン修正付き

シェアする

PHPで時刻を取得、文字列を生成する方法です。

まずタイムゾーンの設定について

レンタルサーバーでphpをいじっていたんですが、同じコードでも、ブラウザから呼び出す場合と、コマンドラインで実行する場合で、タイムゾーンが違ってるらしく、ブラウザから実行したときだけ、時刻が日本の時刻から9時間遅れていることがありました。
恐らく世界標準時になっていますね。

そんなときは、タイムゾーンを設定する必要があります。

php.ini にタイムゾーンの設定をすればOKです。

反映するにはapacheを再起動する必要があります。

さくらのレンタルサーバーでのphp.ini設定

さくらインターネットのレンタルサーバーの場合は、コントロールパネルからphp.iniを編集することができます。

当然ですが、httpdの再起動なんてことは必要ありません。
下図のように、コントロールパネルの「アプリケーションの設定」メニューからPHP設定の編集をクリックすると、php.iniの編集画面になります。

「保存する」をクリックすると、変更終了、自動で反映されます。

php.iniの編集が厳しい場合はプログラム中に設定できます

稼働中のシステムで停止させたくないためサーバーを再起動したくない、とか、再起動の権限なない、などでphp.iniを変更させたくない場合、プログラムにタイムゾーンの設定をすることもできます。

その場合、時刻を取得する前に date_default_timezone_set 関数を使って、

のように設定します。

下図が使用例です。

現時刻を文字列に整形して取得する方法

それでは、実際に時刻を取得する方法を説明します。

date()関数を使います。

上図では、

の行で、日付と時刻の文字列を作って $str_tmに代入しています。

フォーマットを指定する文字については下の表のとおりです。

だいぶ省略していますので、完全なオプションが知りたい場合、PHPマニュアルページを参照してください。

date()関数については、

と定義されており、第1引数にフォーマット、第2引数に対象の日時を指定することになってます。第2引数は省略可能であり、省略した場合、現時刻を示すtime()関数が使われます。

$format  意味
y 年を2桁の数字で表示
m  月を2桁の数字で
d 日を2桁の数字で。 
H 時を2桁の数字で。24時間制。
i 分を2桁の数字で。
s 秒を2桁の数字で。
その他・・・   
Y 年を4桁の数字で。
D 曜日を3文字のテキストで(Monなど)
a amまたはpm
h 時を2桁の数字で。12時間制。

ホントはもっともっといっぱいありますが、普段、これぐらい知っておけば良いかなと思います。

まとめ

php で現在日時を取得して文字列にするには、date()関数を使います。
現在日時を取得する前タイムゾーンを指定してある必要があります。

コマンドラインでPHPを実行するときと、ブラウザからPHPを呼び出すときで、タイムゾーンの設定がアンマッチの場合があるので注意必要です。

php.ini にタイムゾーンの設定が抜けていても、コマンドラインからPHPを実行した場合は、システムのタイムゾーンを見ているのかも知れません。

タイムゾーンの設定は、php.iniか プログラム中で行うことができます。

この記事が気に入ったら
いいね ! しよう