2013-12-09 3 views
-1

У меня есть короткие даты в моих переменных POST.php date + strtotime возвращает неверную дату

Если я это сделать:

$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 (правильный) и 09.12.2013 (неправильное, должно быть 12.12.2013).

Andy идеи?

+0

Почему вы не делаете '$ date. "" , Дата (Y); '? он объединяет день/месяц с годом –

+0

«09.12» - это ужасно двусмысленная, неполная, неопределенная дата. Вы не можете ожидать, что 'strtotime' будет знать, что вы подразумеваете под этим. Используйте любой из доступных методов для явного анализа даты в указанном формате (например, 'DateTime :: createFromFormat'). – deceze

ответ

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

Что-то мешает вам использовать DateTime класс? ;)

ли что-то вроде этого

<?php 
$dt = '12.12'; 
$ctime = DateTime::createFromFormat('d.m', $dt); 
echo $ndate= $ctime->format('d.m.Y'); // "prints" 12.12.2013 
Смежные вопросы