>我有以下代码
date("D j M g a", strtotime($start))." - " . date("ga", strtotime($finish));
`["Start"]=>
string(21) "/Date(1354323600000)/"
["End"]=>
string(21) "/Date(1354326300000)/"
}`
上面的代码以我想要的正确格式输出Thu 1 Jan 12 pm - 12pm" string(22) "Thu 1 Jan 12 pm - 12pm
,但我如何才能正确获得日期日期和时间。
Pacific/Auckland
是我的时区
问题是您传递给strtotime
- /Date(1354323600000)/
字符串的格式对于strtotime
函数来说无效。
实际上,它是一个以毫秒为单位的常规 unix 时间戳。
所以显而易见的解决方案 - 是清理除数字以外的所有内容并将其除以 1000:
$unix_time_with_ms = preg_replace('~D~', '', $date);
echo date('Y-m-d H:i:s', $unix_time_with_ms / 1000);
更喜欢在php.ini
文件中设置默认时区,如下所示:
date.timezone = "Pacific/Auckland"
如果由于某种原因您无法编辑php.ini
那么在 PHP 脚本之上,您可以设置时区(仅对该脚本有效):
date_default_timezone_set('Pacific/Auckland');
您可以使用以下方法设置时区
date_default_timezone_set('America/Los_Angeles');
更多链接
如果你想在脚本中设置,试试
date_default_timezone_set
— 设置脚本中所有日期/时间函数使用的默认时区
date_default_timezone_set('America/Los_Angeles');
但是如果你想使用相同的时区而不是在 PHP 中设置.ini将是更好的解决方案
date.timezone = "America/Los_Angeles"