问题:PHP默认时区是哪里?会受到服务器时区影响吗?
准备环境
OS:CentOS 7
PHP:PHP 7.3.0
查看CentOS 7当前时区
[root@sy-pc ~]# timedatectl
Local time: Sat 2019-08-31 14:53:32 CST
Universal time: Sat 2019-08-31 06:53:32 UTC
RTC time: Sat 2019-08-31 06:53:31
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
timedatectl的其他命令:
1、timedatectl
查看时间各种状态
2、timedatectl list-timezones
列出所有时区
3、timedatectl set-local-rtc 1
将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间
4、timedatectl set-timezone Asia/Shanghai
设置系统时区为上海
php.ini文件中,注释 date.timezone
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone = Asia/Shanghai
PHP代码
PHP
<?php
$time = time();
var_dump($time);
var_dump(date_default_timezone_get());
var_dump(date('Y-m-d H:i:s', $time));
date_default_timezone_set('Europe/London');
var_dump(date_default_timezone_get());
var_dump(date('Y-m-d H:i:s', $time));
date_default_timezone_set('Asia/Shanghai');
var_dump(date_default_timezone_get());
var_dump(date('Y-m-d H:i:s', $time));
date_default_timezone_set('America/New_York');
var_dump(date_default_timezone_get());
var_dump(date('Y-m-d H:i:s', $time));
输出结果
int(1567234155)
string(3) "UTC"
string(19) "2019-08-31 06:49:15"
string(13) "Europe/London"
string(19) "2019-08-31 06:49:15"
string(13) "Asia/Shanghai"
string(19) "2019-08-31 14:49:15"
string(16) "America/New_York"
string(19) "2019-08-31 02:49:15"
phpinfo()函数结果
结论
-
若php未设置默认时区,则PHP使用UTC时间。
UTC时间和伦敦时间相同,可以看成是0时区的时间。 -
PHP默认时区,不受服务器时区影响。