为什么strtotime()给出了错误的日期?

时间:2014-01-03 12:26:26

标签: php strtotime

我正在使用以下代码

$t = strtotime('Saturday, 28 Dec, 2013');
echo date('d/m/Y H:i',$t);
// output : 03/01/2015 20:13

$t = strtotime('Wednesday, 01 Jan, 2014');
echo date('d/m/Y H:i',$t);
// output: 01/01/2014 20:14

第一个例子打印出错误的日期,第二个例子打印出正确的日期。

为什么会这样,我该如何解决?

2 个答案:

答案 0 :(得分:7)

strtotime只能理解specific set of formats。如果您的输入不是这些格式之一,它会尽力猜测,但正如您所看到的,结果会有所不同。

试试这个:

$t = date_create_from_format("D, d M, Y","Saturday, 28 Dec, 2013");
echo date_format($t,"d/m/Y H:i");

答案 1 :(得分:6)

月份之后你有一个不必要的逗号。删除它,您的代码将按预期工作:

$t = strtotime('Saturday, 28 Dec 2013');
echo date('d/m/Y H:i',$t);

$t = strtotime('Wednesday, 01 Jan 2014');
echo date('d/m/Y H:i',$t);

但是我建议你使用DateTime课来代替。这样,您可以使用任何您想要的日期格式:

$date = DateTime::createFromFormat('l, d M, Y', 'Saturday, 28 Dec, 2013');
echo $date->format('d/m/Y H:i');

$date = DateTime::createFromFormat('l, d M, Y', 'Wednesday, 01 Jan, 2014');
echo $date->format('d/m/Y H:i');