php - 当 substr() 返回字符串时,strtotime() 函数工作不一致
问题描述
我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。我最终得到了一个很好的约会,但一开始就有空白。我不知道为什么它在回显时没有出现。解决了。
推荐阅读
- docker - Docker compose build 始终将 ENV 值设置为端口 80
- c# - 动态选择不适用于 Guid 名称属性
- arm-template - 使用 ARM 模板的 Azure 资源部署删除了现有的应用程序配置
- python - 如何使用 OpenCV 同时从连接到 Raspberry Pi 3 的两个 USB 摄像头捕获和保存图像?
- flutter - 颤振中的问题。Firebase 上一个版本和上一个版本身份验证之间的冲突
- express - 无法在 Express 中使用 Mongoose 连接到 MongoDB Atlas
- angular - 提供角度构建时出现非法状态问题中的错误
- python - 如何显示另一个窗口
- python - 如何在字符串匹配期间捕获所有特殊字符?
- ios - 如何在 Cordova for iOS 中本地化应用程序名称?