当我输入php -i
时,我得到以下信息:
date
date/time support => enabled
"Olson" Timezone Database Version => 0.system
Timezone Database => internal
Default timezone => America/New_York
这些设置来自哪里,它们是否影响日期时间函数的行为?
例如,尽管the docs中的内容date_default_timezone_get
在没有任何警告的情况下返回给我America/New_York
,却忽略了我的date.timezone => no value
和date_default_timezone_set
不适用。受Default timezone => America/New_York
影响吗?
The comment暗示这是Ubuntu特定的行为。是吗?
NB。
我观察到两种配置的行为:Ubuntu 16.04 + php 7.2.7
和Debian 8.7 + php 5.6.30
答案 0 :(得分:-1)
PHP的配置来自.ini文件。您的计算机上可能安装了多个版本的PHP。在我将<?php phpinfo();exit;
作为文件中的整个代码放到的屏幕截图下方。
这显示了我在Xampp中使用PHP安装方式的“已加载配置文件”。
在phpinfo()
输出中检查相同的条目,然后找出条目。然后检查该文件。
就我而言(在搜索“时区”时),我有这个:
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
未使用此部分。因此,继续寻找,某个地方有一个值或一个配置。在我的后面我会这样:
[Date]
date.timezone=Europe/Berlin
get函数(date_default_timezone_get()
)的获取时区如下:
按照优先顺序,此函数通过以下方式返回默认时区:
使用date_default_timezone_set()读取时区设置 功能(如果有)
仅在PHP 5.4.0之前:读取TZ环境变量(如果不是) 空)
读取date.timezone ini选项的值(如果已设置)
仅在PHP 5.4.0之前:查询主机操作系统(如果 操作系统支持和允许)。这使用的算法必须 猜时区。这绝不是为了 每种情况。达到此阶段时,将显示警告。不要 依靠它来正确猜测,并将date.timezone设置为 改为正确的时区。
如果以上方法均未成功,则date_default_timezone_get()将返回 UTC的默认时区。