2011-07-18 47 views
8

我不明白为什么gmdate()date()恢复相同的值,如果我的服务器未配置为在格林威治标准时间。了解gmtime返回值

这是为什么?

echo time();     // 1311011114 
echo date("U");    // 1311011114 
echo gmdate("U");   // 1311011114 


echo date("j-m-y H:m:s"); // 18-07-11 12:07:14 
echo date("e");    // America/Chicago 
echo date("O");    // -0500 
echo date("T");    // CDT 

UPDATE
我如何获得当前时间格林威治?用日期(“O”)计算?有其他方法吗?

+0

见链接我加入到我的职位为您更新 – Neal

+0

这对我来说很有意义的anwser是:'时间()总是相同的** **到处' –

回答

5

因为时间永远不会改变 - 它始终是自纪元(GMT)以来的秒数。

时间总是一样的。这只是你的时区不同而这就是显示日期的不同。

您可以更改您的时区,以便在不同区域查看时间。

所有日期/时间功能

2

所以在很久以前,人们需要一种方法来确定跨越,这是穿制服的多个计算系统时间,请参阅here。互联网时代之前的智者长老计算机协会理事会(简称CSCWE)就是这样决定的。无记名投票决定了任意的起点将是1970年,预示着更高的计算时代。所以从那一刻开始,数十年来的无休止的行进开始了,以稳定的秒数跳动计算革命的新时代。

从这个任意定义的开始,所有的计算时间可以通过针对这个不断增加的秒数运行数学魔术并且然后考虑时间区域来确定。

+0

我知道这一切。我已经更新了这个问题。我不明白为什么gmdate()存在。似乎是date的别名() –

+0

@LuisSiquot:http://php.net/manual/en/function.gmdate.php它总是会返回gmtime,而'date()'只会返回当前时区设置 – Neal

+0

_date ()只会返回当前时区设置_“U”修饰符除外? –

0

它已经回答,但如果你想获得本地时间和UTC时间;

date_default_timezone_set('America/Chicago'); 

$format = 'Y-m-d H:i:s'; 
$time1 = time(); 
$time2 = strtotime(gmdate($format)); 

print date($format, $time1); 
print date($format, $time2); 

// 2014-07-24 17:31:23 
// 2014-07-24 22:31:23