Функция strtotime () работает непоследовательно, когда строка возвращается функцией substr () - PullRequest
0 голосов
/ 14 июня 2019

Я использую 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

, как ожидалось.

1 Ответ

0 голосов
/ 14 июня 2019

Оказывается, я просто не знаю, как считать, и мне пришлось сделать -21, а не - 22 для начального индекса для substr ().Я закончил с прекрасной датой, но с пробелом в самом начале.Я не знаю, почему он не появился, когда эхо.Решаемые.

...