PHP的strtotime()不适用于April的缩写(apr)

时间:2016-04-04 20:18:23

标签: php date strtotime

写作时:

echo date('H:i:s', strtotime('Mar-29-2016')) . "<br />";
echo date('H:i:s', strtotime('Apr-3-2016'));

我希望得到:

00:00:00
00:00:00

但实际上得到:

00:00:00
16:16:00

更改为:

echo date('H:i:s', strtotime('March 29 2016')) . "<br />";
echo date('H:i:s', strtotime('April 3 2016'));

通过输出按预期工作:

00:00:00
00:00:00

strtotime()怎么样?我不明白吗?

3 个答案:

答案 0 :(得分:1)

尝试:

echo date('H:i:s', strtotime('Apr-03-2016'));

strtotime函数需要一个包含英文日期格式的字符串,并尝试将该格式解析为Unix时间戳。

答案 1 :(得分:1)

&#34; APR-3-2016&#34;不是有效的PHP复合日期/时间字符串。将您的字符串转换为strtotime()可识别的字符串。例如,将下面的第一个结果(您的字符串)与其他一些选项进行比较:

echo date('r', strtotime('Apr-3-2016')) . "\n"; 
echo date('r', strtotime('3-Apr-2016')) . "\n";
echo date('r', strtotime('2016-04-03')) . "\n";
echo date('r', strtotime('4/3/2016'))   . "\n";

Sun, 03 Apr 2016 16:16:00 -0400
Sun, 03 Apr 2016 00:00:00 -0400
Sun, 03 Apr 2016 00:00:00 -0400
Sun, 03 Apr 2016 00:00:00 -0400

转换你的&#34; Apr-3-2016&#34;格式为&#34; 2016年4月3日&#34;,例如:

$date = "Apr-3-2016";
list($m, $d, $y) = explode("-", $date);
$newdate = join("-", array($d, $m, $y));

答案 2 :(得分:0)

似乎Apr-3-2016不是有效的日期格式。来自php docs

Month abbreviation, day and year    M "-" DD "-" y  "May-09-78", "Apr-17-1790"