php的默认时区是什么?我在 php 中检查了它.ini它显示以下内容,时区留空:
[Date]
; Defines the default timezone used by the date functions
;date.timezone =
;date.default_latitude = 31.7667
;date.default_longitude = 35.2333
;date.sunrise_zenith = 90.583333
;date.sunset_zenith = 90.583333
然后我想知道如果我没有使用 date_deafult_timezone_set() 或任何其他方式显式设置,在 PHP 中操作时间时默认使用哪个时区?
PHP 7 答案
PHP (>= 5.4.0) 的现代版本使用以下步骤,直到找到默认时区:
-
读取使用 date_default_timezone_set() 函数设置的时区(如果有)
-
读取 date.timezone ini 选项的值(如果已设置)
-
如果上述方法均未成功,则默认时区将为 UTC。
不再使用TZ
环境变量。
来源: https://www.php.net/manual/en/function.date-default-timezone-get.php
如果未指定 date.timezone 则默认为系统环境变量 TZ。您可以使用此代码检查默认值date_default_timezone_get()
。
更多信息可以在这里找到:http://www.php.net/manual/en/function.date-default-timezone-get.php
您必须为默认时区编写的简单代码。 即:
date_default_timezone_get()
现在如何使用:
您必须在此函数中传递时区,就像我们希望将印度时区设置为默认值一样,请参阅:
date_default_timezone_set("Asia/Kolkata");
现在,无论何时使用 date(),都会自动返回印度时区。
如果您想要一个例子,我会参考:如何在 php 中转换默认日期时区
您可以从实验中检查下面描述的所有内容:
如果 php''php-fpm 在配置中有 date.时区设置 则默认时区将是相等的日期.时区
如果 php''php-fpm 的配置中没有 date.timezone,那么 php''php-fpm尝试找出主机的时区。如果成功,则默认时区将是相等的主机时区。如果他们不成功(下面的示例请查看下面),则默认时区将等于 UTC。
例子。
主机时区:
# stat /etc/localtime
File: /etc/localtime -> /usr/share/zoneinfo/Europe/Helsinki
php''php-fpm 时区
# php -i | grep timezone
Default timezone => Europe/Helsinki
date.timezone => no value => no value
# php-fpm7.3 -i | grep timezone
Default timezone => Europe/Helsinki
date.timezone => no value => no value
所以 php''php-fpm 成功地确定了主机时区
下一个示例
主机时区:
# stat /etc/localtime
File: /etc/localtime -> /usr/share/zoneinfo/Antarctica/Casey
php''php-fpm 时区
# php -i | grep timezone
Default timezone => UTC
date.timezone => no value => no value
# php-fpm7.3 -i | grep timezone
Default timezone => UTC
date.timezone => no value => no value
php''php-fpm 无法识别主机时区并设置 UTC 时区
下一个示例。主机时区:
# timedatectl
Local time: Wed 2023-06-21 00:22:59 CEST
Universal time: Tue 2023-06-20 22:22:59 UTC
RTC time: n/a
Time zone: Europe/Budapest (CEST, +0200)
System clock synchronized: yes
NTP service: inactive
RTC in local TZ: no
我们在配置文件中设置日期.时区
php cli config
# cat /etc/php/7.3/cli/php.ini | grep timezone | grep -v ";"
date.timezone = "Antarctica/Casey"
php-fpm config
# cat /etc/php/7.3/fpm/php.ini| grep timezone | grep -v ";"
date.timezone = "Antarctica/Casey"
检查 php''php-fpm 时区
# php -i | grep timezone
Default timezone => Antarctica/Casey
date.timezone => Antarctica/Casey => Antarctica/Casey
# php-fpm7.3 -i | grep timezone
Default timezone => Antarctica/Casey
date.timezone => Antarctica/Casey => Antarctica/Casey
所以当设置日期时区时,php''php-fpm 不关心主机时区
;date.timezone =
; This is diasable text
This is working text
明白了吗? 有了这个;在某些 ini 文件上,您可以禁用某些脚本/代码。您可以在 php 中设置时区,例如: date_default_timezone_set('Europe/London');
和其他像欧洲/阿姆斯特丹...阅读更多关于 php 默认时区的信息