1

根据http://www.php.net/manual/en/function.date.php

可选的时间戳参数是一个整数 Unix 时间戳,如果没有给出时间戳,则默认为当前本地时间。换句话说,它默认为 time() 的值。

但是,在 time() 的定义中没有提到它依赖于时区。哪一个是对的?

4

4 回答 4

6

time() 返回自 1970 年 1 月 1 日 00:00 GMT 以来的秒数。

无论您在哪个时区,自 UNIX 纪元以来经过的秒数都是相同的。

于 2012-12-20T10:16:03.497 回答
4

不,返回的值与time()时区无关:

date_default_timezone_set("UTC");
echo "UTC:".time();
echo "<br>";

date_default_timezone_set("Europe/Helsinki");
echo "Europe/Helsinki:".time();
echo "<br>"; 

两者都输出相同的值。

关于您的编辑,返回值time()取决于您机器上的当前时间。您机器上的当前时间通常通过指定时区以及日期 + 时间来设置。

当我们说返回的值与time()时区无关时,我们的意思是在任何给定时刻,地球上所有位置的 UTC 时间的正确值都是相同的。

假设日本的一个人要正确设置他们的系统时间(以及时区),而印度的另一个人也要做同样的事情。在任何给定时刻,如果它们time()同时调用,它们将获得相同的值。

于 2012-12-20T10:13:08.560 回答
2

我认为文档有点含糊,意思是“本地”,就像“运行它的机器”一样。或者您可以表示由于date根据设置的时区格式化时间戳,返回的值date将是“本地”时间。

即,“本地”在这里并不真正意味着什么。

于 2012-12-20T10:44:20.553 回答
0

我想我知道这个问题。

time() 它本身与时区无关。

然而,

date() 取决于时区。数据的格式取决于 date_default_timezone_set

所以,按照阿萨德的回答

date_default_timezone_set("UTC");
echo "UTC:".date(...);
echo "<br>";

date_default_timezone_set("Europe/Helsinki");
echo "Europe/Helsinki:".date(...);
echo "<br>"; 

会产生不同的价值。他们都使用时间

于 2012-12-21T08:36:58.187 回答