我正在使用以下代码
$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
第一个例子打印出错误的日期,第二个例子打印出正确的日期。
为什么会这样,我该如何解决?
答案 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');