沢田内科医院HPで、「トップページ」の「カレンダー」と、「診療時間と休診日」ページの「診療時間」で、現在の日付を表示しています。

しかし、ここ最近、早朝にHPを表示すると、前日の日付となっていました。

どちらのページも、PHPファイルで、サーバーの時計を参照し、日付を表示しています。

そこで、レンタルサーバの事業者(TOK2PRO)に、メールで問い合わせてみたのですが、

・・・
対象サーバーの時間は正常であることを確認いたしました。
※自動同期によりサーバー時間を設定させて頂いております。
・・・

とのこと。

試しに、PHPファイルの内容を見直し、日付だけでなく時刻まで表示させてみました。
(9行目)

<head>
	<meta charset="UTF-8">
</head>
<div style="font-weight: 600; text-align: center;">
<?php
	$yobi = array("日","月","火","水","木","金","土","日");
	echo "本日: ".date("Y年m月d日")."(".$yobi[date("N")]."曜日)";
	echo "<br>";
	echo date("Y年m月d日 H:i:s");
?>
</div>

150325a結果、実際の日時が、
2015年03月25日 08:47:49

に対し、today.phpが表示した日時は、
2015年03月24日 23:47:46

(秒は、ブラウザ表示からキャプチャ操作までに進行。)

・・・そう、ここでピーンときました。
タイムゾーンの分、ちょうど9時間遅れているではありませんか。
(日本標準時(JST)は、協定世界時(UTC)を9時間進めた標準時。UTC+9と表現。)

おそらく、ここ最近、TOK2PROさんがPHPプログラムの更新でもして、php.iniファイルにタイムゾーン設定が抜けているものと推測されます。

Screenshot from 2015-03-25 01:58:52
当方の自宅サーバのphp.iniは、タイムゾーン設定をしてあるので、カレンダーの日付は遅れたりしていません。

※過去記事「FTPクライアントWin版FileZillaでHP転送」参照。

「date.timezone = Asia/Tokyo」を設定しています。



本日、php.iniのタイムゾーン設定依頼を、TOK2PROさんにメールしておきましたが・・・。

・・・もう少し、調べたら、php.iniを変更できない場合の対処法を発見。

PHPファイル内に以下の記述をすれば良いようです。
(6行目)

<head>
	<meta charset="UTF-8">
</head>
<div style="font-weight: 600; text-align: center;">
<?php
	date_default_timezone_set('Asia/Tokyo');	//2015.03.25 追加
	$yobi = array("日","月","火","水","木","金","土","日");
	echo "本日: ".date("Y年m月d日")."(".$yobi[date("N")]."曜日)";
	/* 2015.03.25 追加・・・確認時コメントアウト
	echo "<br>";
	echo date("Y年m月d日 H:i:s");
	*/
?>
</div>

150325b上記の記述を追加して、日付表示の正常化を確認。

右の画像は、上記ソースではコメントとしている部分(9〜12行目)を、コメント解除して実行したものです。
ちなみに、サーバphp.iniのタイムゾーン設定「date.timezone = Asia/Tokyo」と、PHPファイルのタイムゾーン設定「date_default_timezone_set(‘Asia/Tokyo’);」の両方が記述されていても、正常な時刻を表示しました。(自宅サーバ環境で確認済み。)

・・・これにて一件落着。