Я использую substr()
, чтобы получить строку даты из длинного текста, дату, найденную с помощью функции preg_match()
.Затем я использую strtotime()
, чтобы преобразовать эту строку в метку времени эпохи, потому что мне нужно провести сравнение с другой датой, уже имеющейся в этом формате.
Кажется, что она работает весьма непоследовательно, и после некоторого тестирования я могукажется, не найти источник ошибки.Хотя строка даты, возвращаемая substr()
, всегда верна, функция strtotime()
не всегда работает.Обратите внимание, что substr()
извлекается из строки большего размера, которая сама поступает из базы данных.Может ли проблема быть в скрытом символе или форматировании?
<?php
$DateString = substr($text, $matches[sizeof($matches) - 1][1] - 22, 17); //$DateString = the expected '2018-03-21 08:04' when echo
$DateString_hardcoded = '2018-03-21 08:04';
$DateEpoch = strtotime($DateString); //$DateEpoch is null
$DateEpoch_hardcoded = strtotime($DateString_hardcoded); //$DateEpoch_hardcoded return the expected 1521619440
?>
Чего я не понимаю, так это того, что иногда строковая дата конвертируется правильно, используя точно такой же код.Например, когда
substr($text, $matches[sizeof($matches) - 1][1] - 22, 17) = '2010-08-23 16:10', $DateEpoch = 1282579800
, как ожидалось.