欢迎在这里运行代码:http://codepad.org/SAOaOABn
码:
<?php
$time = time();
echo date_default_timezone_get()."\n";
echo mktime( gmdate("H", $time), gmdate("i", $time), gmdate("s", $time), gmdate("m", $time), gmdate("d", $time), gmdate("Y", $time))."\n";
date_default_timezone_set('Australia/Brisbane');
echo date_default_timezone_get()."\n";
echo mktime( gmdate("H", $time), gmdate("i", $time), gmdate("s", $time), gmdate("m", $time), gmdate("d", $time), gmdate("Y", $time));
Run Code Online (Sandbox Code Playgroud)
输出:
UTC
1297828288
Australia/Brisbane
1297792288
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么澳大利亚/布里斯班(UTC + 10)产生的时间值低于UTC?
你告诉计算机你的时区是UTC + 10.然后当你说"请告诉我在布里斯班的11:00时的UTC时间"时,你将得到01:00 UTC.
该mktime函数使用本地时间,同时gmdate使用UTC,因此您不会返回UTC.如果你使用date而不是gmdate,你会得到相同的时间.