如果PhP中time()的值不受时区的影响,那么为什么date函数默认为它?


If value of time() in PhP not influenced by timezone then why date function default to it?

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

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

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

time()返回从00:00 1/1/1970 GMT开始的秒数。

无论您在哪个时区,从UNIX纪元开始经过的秒数都是相同的。

否,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(),它们将得到相同的值。

我认为文档只是有点模糊,意思是"本地"是在上运行的机器的"本地"。或者您可以将其定义为由于date根据设置的时区格式化时间戳,因此date返回的值将是"本地"时间。

我想我知道这个问题。

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>"; 

将产生不同的值。它们都使用时间