当 substr() 返回字符串时,strtotime() 函数工作不一致
strtotime() function working inconsistently when the string is returned by substr()
我正在使用 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
符合预期。
原来我只是不知道如何计数,我不得不为 substr() 的起始索引做 -21 而不是 - 22。
我结束了一个美好的约会,但一开始是空白的 space。我不知道为什么它在回声时没有出现。
已解决。
我正在使用 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
符合预期。
原来我只是不知道如何计数,我不得不为 substr() 的起始索引做 -21 而不是 - 22。 我结束了一个美好的约会,但一开始是空白的 space。我不知道为什么它在回声时没有出现。 已解决。