Это мой PHP код:Использование StrToTime для разбора даты в формате D/M/Y
$g = "19/06/2013";
echo $g." // ".date("Y/m/d", strtotime($g))
Выход это 19/06/2013 // 1970/01/01
вместо 19/06/2013 // 2013/06/19
.Why?
Это мой PHP код:Использование StrToTime для разбора даты в формате D/M/Y
$g = "19/06/2013";
echo $g." // ".date("Y/m/d", strtotime($g))
Выход это 19/06/2013 // 1970/01/01
вместо 19/06/2013 // 2013/06/19
.Why?
Заменить /
с -
, чтобы преобразовать его в формат, подходящий для strtotime
функции
Используйте это: -
$g = "19/06/2013";
echo $g."// ". date("Y/m/d", strtotime(str_replace('/','-',$g)))
Или просто используйте класс DateTime, который позволит вам указать арбитраж формат. -1 из-за попытки изобрести колесо, когда функциональность для этого варианта использования уже существует, и это * не * пытается принудить данные, поэтому strtotime * может * вернуть правильный результат. –
Потому что 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');
Это «почему?»:
Примечание: Даты в м/д/г или DMY форматы снято неоднозначность, глядя на разделитель между различными компонентами: если SEPA rator - косая черта (/), то предполагается, что американский m/d/y; тогда как если разделитель является тире (-) или точкой (.), то предполагается европейский формат d-m-y.
Смотрите здесь !: http://php.net/manual/en/function.strtotime.php
+1: Хорошее объяснение ... – mrsrinivas
'StrToTime (str_replace ('/ ',' - ', $ g)) ' – Twisted1919