簡體   English   中英

php - date_default_timezone_set無效,為什么?

[英]php - date_default_timezone_set not working, Why?

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-05-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從其他系統復制到我的系統來解決這個問題。

嘗試這個。

<?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(); 不工作

另請查看http://php.net/manual/pl/function.time.php#100220

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM