date_default_timezone_setが機能しません。php - date_default_timezone_setが動作しません、なぜですか?
私のコード:
ini_set('display_errors', true);
error_reporting(E_ALL);
date_default_timezone_set("UTC");
echo date('Y-m-d H:i:s T') . "<br>";
echo date('Y-m-d H:i:s T', time()) . "<br>";
date_default_timezone_set("Asia/Shanghai");
echo date('Y-m-d H:i:s T') . "<br>";
echo date('Y-m-d H:i:s T', time()) . "<br>";
ini_set("date.timezone","UTC");
echo date('Y-m-d H:i:s T') . "<br>";
echo date('Y-m-d H:i:s T', time()) . "<br>";
ini_set("date.timezone","Asia/Shanghai");
echo date('Y-m-d H:i:s T') . "<br>";
echo date('Y-m-d H:i:s T', time()) . "<br>";
それらのすべては、なぜ、同じ日付 "2017年5月26日午前12時47分08秒CST" を返しますか?
アップデート:私はこの問題を
固定している、その理由は、私がCentOS7のタイムゾーンを変更するには間違った方法を使用していることである:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
この方法はCentOS6上の権利であるが、 CentOS7/etc/localtimeの/ usr/share/zoneinfo/Etc/UTCにリンクされているので、UTCタイムゾーンが破損しています。
CentOS7のタイムゾーンを変更する正しい方法は次のとおりです。
timedatectl set-timezone "Asia/Shanghai"
または
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ので、私は他のシステムから自分のシステムにには、/ usr/share/zoneinfoのは/ etc/UTCをコピーこの問題は修正されました。
を確認し、これは(時間は含まない)が、同じ結果を返します。私も試してみてください:$ now = new DateTime(); $ now-> setTimezone(新しいDateTimeZone( 'UTC')); echo $ now-> format( 'Y-m-d H:i:s T')。 "
";それが返されます:2017-05-26 13:14:27 CST、なぜタイムゾーンはCST(チャイン)ですか? – gdtv
@gdtvしかし、その日付をエコーする直前に、タイムゾーンをUTCに設定します。だからエコー日付(時間())はあなたのエコーと同じになります。両方ともUTC – Andreas