2017-05-26 5 views
1

date_default_timezone_set funktioniert nicht.php - date_default_timezone_set funktioniert nicht, Warum?

mein Code:

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>"; 

alle von ihnen geben das gleiche Datum "2017.05.26 00.47.08 CST", warum?


Update:

ich dieses Problem behoben haben, der Grund ist, dass ich die falsche Art und Weise verwendet, um die Zeitzone auf CentOS7 zu ändern:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

auf diese Weise direkt am CentOS6, aber in CentOS7/etc/localtime ist mit/usr/share/zoneinfo/Etc/UTC verbunden, also habe ich die UTC-Zeitzone beschädigt.

der richtige Weg, um die Zeitzone auf CentOS7 zu ändern ist:

timedatectl set-timezone "Asia/Shanghai" 

oder

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

so kopiert I/usr/share/zoneinfo/Etc/UTC von anderem System zu meinem System behebt dieses Problem.

Antwort

2

Versuchen Sie dies.

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

time() ist unabhängig Zeitzone. Das bedeutet, dass es immer die Zeit in Sekunden seit dem 1. Januar 1970 zurückgibt, egal wie die Zeitzone konfiguriert ist. Es dauert immer die UTC-Zeit.

date_default_timezone_set(); NOT working

Überprüfen Sie auch diese http://php.net/manual/pl/function.time.php#100220

+0

bitte obigen Code sehen zu, versuche ich auch "echo date ('Ymd H: i: s T')", diese umfassen Zeit nicht(), aber es gibt das gleiche Ergebnis zurück. und ich versuche es auch: $ now = new DateTime(); $ now-> setTimezone (neue DateTimeZone ('UTC')); echo $ now-> format ('Y-m-d H: i: s T'). "
"; es zurück: 2017-05-26 13:14:27 CST, warum ist die Zeitzone CST (chine)? – gdtv

+0

@gdtv Aber bevor Sie dieses Datum wiedergeben, legen Sie die Zeitzone auf UTC fest. Das Echodatum (time()) entspricht also Ihrem Echo, da beide UTC sind – Andreas

Verwandte Themen