3

我知道可以通过以下方法(也许更多)更改时区:

  1. 在每个 php 文件中设置putenv()时区。
  2. 在 php.ini 中设置date.timezone时区。
  3. 在根 .htaccess 文件中设置php_value date.timezone时区。

我的问题是,设置时区是只影响date()功能,还是也影响time()功能?

我阅读了文档,但我仍然有点困惑。我认为答案是前者,但我需要确定,所以如果有人能证实这一点,那就太好了。

谢谢!

4

4 回答 4

5

time() 不受时区影响。日期等函数,将生成的日期转换为时区而不影响时间戳。

<?php
var_dump(date_default_timezone_get());

$time1 = time();
var_dump($time1);
var_dump(date("r", $time1));

date_default_timezone_set("America/Los_Angeles");
var_dump(date_default_timezone_get());

$time2 = time();
var_dump($time2);
var_dump(date("r", $time1));

var_dump($time1 === $time2);

输出:

string(16) "Europe/Amsterdam"
int(1571676424)
string(31) "Mon, 21 Oct 2019 18:47:04 +0200"
string(19) "America/Los_Angeles"
int(1571676424)
string(31) "Mon, 21 Oct 2019 09:47:04 -0700"
bool(true)

演示:https ://3v4l.org/Cggc3

于 2012-12-04T18:55:48.463 回答
3

试试下面的例子:

date_default_timezone_set("Europe/Paris");
echo gmdate("H:i:s");
echo "<br/>";
echo date("H:i:s");
echo "<br/>";
echo time();

echo "<br/>";
echo "<br/>";

date_default_timezone_set("Asia/Chungking");
echo gmdate("H:i:s");
echo "<br/>";
echo date("H:i:s");
echo "<br/>";
echo time();

echo "<br/>";
echo "<br/>";

显示:

18:52:38
19:52:38
1354647158

18:52:38
02:52:38
1354647159
于 2012-12-04T18:55:27.357 回答
3

返回自 Unix 纪元(格林威治标准时间 1970 年 1 月 1 日 00:00:00)以来以秒数测量的当前时间。

由于这是一个绝对时间点,从那时起经过的秒数(相对论目的除外)是明确的。无论任何时区设置如何,您都将获得相同的值。

于 2012-12-04T18:57:22.267 回答
2

php time() 使用 GMT 计算时间,因此它与您设置的时区无关

于 2012-12-04T18:55:14.550 回答