为什么 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

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

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

strtotime只能理解一组特定的格式。如果您的输入不是这些格式之一,它将尽力猜测,但如您所见,结果可能会有所不同。

试试这个:

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

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

$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);

但我建议你,改用日期时间类。这样,您就可以使用所需的任何日期格式:

$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');

相关内容

最新更新