![](/img/trans.png)
[英]PHP date_default_timezone_set makes no change to the time() - why?
[英]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時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.