2013-07-11 2 views

ответ

0

Заменить / с -, чтобы преобразовать его в формат, подходящий для strtotime функции

Используйте это: -

$g = "19/06/2013"; 
echo $g."// ". date("Y/m/d", strtotime(str_replace('/','-',$g))) 
+0

Или просто используйте класс DateTime, который позволит вам указать арбитраж формат. -1 из-за попытки изобрести колесо, когда функциональность для этого варианта использования уже существует, и это * не * пытается принудить данные, поэтому strtotime * может * вернуть правильный результат. –

2

Потому что strtotime (documentation) понимает только specific date formats и d/m/Y не является одним из них.

Вы можете сделать код работу, используя один из понимаемых форматов, таких как d-m-Y или d.m.Y (простой str_replace на входе будет делать это), но было бы лучше использовать DateTime класс для этого и делают все четко :

$dt = DateTime::createFromFormat('d/m/Y', $g); 
echo $g." // ".$dt->format('Y/m/d'); 
6

Это «почему?»:

Примечание: Даты в м/д/г или DMY форматы снято неоднозначность, глядя на разделитель между различными компонентами: если SEPA rator - косая черта (/), то предполагается, что американский m/d/y; тогда как если разделитель является тире (-) или точкой (.), то предполагается европейский формат d-m-y.

Смотрите здесь !: http://php.net/manual/en/function.strtotime.php

+1

+1: Хорошее объяснение ... – mrsrinivas

Смежные вопросы