php date + strtotime返回错误的日期

时间:2013-12-09 10:46:43

标签: php date strtotime

我的POST变量中有一些短日期。

如果我这样做:

$i = 0;
foreach ($data->week as $week) {
    $date = $_POST['date'.($i+1)];
    echo $date;
    ...
    $i++;
 }

它返回正确的短日期,例如09.12。和12.12。

如果我这样做

echo date('d.m.Y', strtotime($date));

它将于09.12.2013(正确)和2013年12月9日返回(不正确,应该是12.12.2013)。

安迪的想法?

2 个答案:

答案 0 :(得分:2)

您对strtotime的使用不正确。通过此类调用,它将为当前日期应用时间值。就像:

var_dump(date('d.m.Y H:i:s', strtotime('12.12')));//09.12.2013 12:12:00
var_dump(date('d.m.Y H:i:s', strtotime('11.12')));//09.12.2013 11:12:00

相反,您应该使用DateTime API createFromFormat()方法。

答案 1 :(得分:1)

是否阻止您使用 DateTime 类? ;)

做这样的事情

<?php
$dt = '12.12';
$ctime = DateTime::createFromFormat('d.m', $dt);
echo $ndate= $ctime->format('d.m.Y'); // "prints" 12.12.2013