strtotime () выдает false для форматированной даты

У меня проблема с преобразованием отформатированной строки даты в целочисленную метку времени. Я использую datepicker для ввода поля, такого как DD/MM/YY, и я использую strtotime, чтобы его изменить.

Пример использования

$date_from = (!empty($_POST['datefrom'])) ? (string) $db->sql_escape($_POST['datefrom']) : false;
$date_to   = (!empty($_POST['dateto'])) ? (string) $db->sql_escape($_POST['dateto']) : false;

$time_from = (!empty($_POST['timefrom'])) ? (string) $db->sql_escape($_POST['timefrom']) : '';
$time_to   = (!empty($_POST['timeto'])) ? (string) $db->sql_escape($_POST['timeto']) : '';

Свалки

var_dump($_POST); 
var_dump($date_from . ' ' . $time_from);
var_dump($date_to . ' ' . $time_to);

Выходы

array(4) {
  ["datefrom"]=>
  string(10) "23/03/2011"
  ["dateto"]=>
  string(10) "18/04/2011"
  ["timefrom"]=>
  string(5) "01:26"
  ["timeto"]=>
  string(5) "04:44"
}
string(16) "23/03/2011 01:26"
string(16) "18/04/2011 04:44"

Теперь вы можете видеть, что каждая переменная не пуста, теперь ничего не возвращается (кроме false) при использовании strtotime с этим:

$range_from = strtotime($date_from . ' ' . $time_from);
$range_to   = strtotime($date_to . ' ' . $time_to);

var_dump($range_from);
var_dump($range_to);

Выходы

bool(false)
bool(false)

Вот где я застрял, думая, почему он не конвертирует DD/MM/YY HH:MM в метку времени, я с трудом могу найти, что с этим не так ...


person MacMac    schedule 20.04.2011    source источник


Ответы (1)


См. http://php.net/strtotime

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

23.03.2011 в м / д / у недопустимо, поэтому функция возвращает false.

person Yexo    schedule 20.04.2011
comment
Это немного глупо, почему бы не использовать стандарт системы по умолчанию? - person alimack; 06.06.2017
comment
По умолчанию использование системного стандарта было бы еще более проблематичным, поскольку это означает, что код, работающий в одной системе, ломается в следующей. - person Yexo; 09.06.2017