2017-05-26 21 views
1

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をコピーこの問題は修正されました。

答えて

2

お試しください。

<?php 
    $now = new DateTime(); 
    $now->setTimezone(new DateTimeZone('America/Los_Angeles')); 
    echo $now->format('Y-m-d H:i:s T'); 
?> 

time()はタイムゾーンに依存しません。これは、1970年1月1日以降、タイムゾーンがどのように設定されていても、常に秒単位で秒を返します。それは常にUTC時間を要します。

date_default_timezone_set(); NOT working

また、私はまた、 "エコー日付( 'はYmd H:I:S T')を" しようとし、上記のコードする参照してください。この http://php.net/manual/pl/function.time.php#100220

+0

を確認し、これは(時間は含まない)が、同じ結果を返します。私も試してみてください:$ 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

+0

@gdtvしかし、その日付をエコーする直前に、タイムゾーンをUTCに設定します。だからエコー日付(時間())はあなたのエコーと同じになります。両方ともUTC – Andreas

関連する問題