PHP设置正确的时区

PHP设置正确的时区,php,timezone,Php,Timezone,我有以下代码 日期(“D j M g a”,标准时间($start))。“-”。日期(“ga”,标准时间($finish)); 上述代码以我想要的正确格式输出Thu Jan 1 12 pm-12pm“string(22)”Thu Jan 1 12 pm-12pm,但如何才能获得正确的日期和时间 Pacific/Auckland是我的时区更喜欢在php.ini文件中使用如下行设置默认时区: date.timezone = "Pacific/Auckland" 如果出于某种原因,您无法编辑php

我有以下代码

日期(“D j M g a”,标准时间($start))。“-”。日期(“ga”,标准时间($finish));

上述代码以我想要的正确格式输出
Thu Jan 1 12 pm-12pm“string(22)”Thu Jan 1 12 pm-12pm
,但如何才能获得正确的日期和时间


Pacific/Auckland
是我的时区

更喜欢在
php.ini
文件中使用如下行设置默认时区:

date.timezone = "Pacific/Auckland"
如果出于某种原因,您无法编辑
php.ini
,则可以在php脚本的顶部设置时区(仅对该脚本有效):


您可以使用设置时区

date_default_timezone_set('America/Los_Angeles');

更多信息

如果要在脚本中设置,请尝试

date\u default\u timezone\u set
-设置脚本中所有日期/时间函数使用的默认时区

date_default_timezone_set('America/Los_Angeles');
但是,如果您想使用与php.ini相同的时区,那么在php.ini中设置将是更好的解决方案

 date.timezone = "America/Los_Angeles"

问题是传递给
strotime
-
/Date(1354323600000)/
字符串的内容的格式对于
strotime
函数无效

实际上,它是一个以毫秒为单位的常规unix时间戳

因此,显而易见的解决方案——是清除除数字以外的所有数据,并将其除以1000:

$unix_time_with_ms = preg_replace('~\D~', '', $date);
echo date('Y-m-d H:i:s', $unix_time_with_ms / 1000);
 date.timezone = "America/Los_Angeles"
$unix_time_with_ms = preg_replace('~\D~', '', $date);
echo date('Y-m-d H:i:s', $unix_time_with_ms / 1000);