我有以下代码
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
是我的时区
答案 0 :(得分:1)
问题是,您传递给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);
答案 1 :(得分:0)
首选在php.ini
文件中使用如下行设置默认时区:
date.timezone = "Pacific/Auckland"
如果由于某种原因您无法编辑php.ini
,那么在您的PHP脚本之上您可以设置一个时区(仅对该脚本有效):
date_default_timezone_set('Pacific/Auckland');
答案 2 :(得分:0)
答案 3 :(得分:0)
如果要在脚本中设置,请尝试
date_default_timezone_set
- 设置脚本中所有日期/时间函数使用的默认时区
date_default_timezone_set('America/Los_Angeles');
但是如果你想使用与php.ini中设置相同的时区将是更好的解决方案
date.timezone = "America/Los_Angeles"