我有时间字符串如下如何检查是否时间串(无日期部分)是在H:I:s格式PHP
8:7:9
17点34分38秒
我想检查字符串是否具有H:i:s格式,如果我发现完全无效的字符串,如空,其他文本值,带日期部分的字符串(2017:10:12 18:39:21)
Thanks in提前..!
我有时间字符串如下如何检查是否时间串(无日期部分)是在H:I:s格式PHP
8:7:9
17点34分38秒
我想检查字符串是否具有H:i:s格式,如果我发现完全无效的字符串,如空,其他文本值,带日期部分的字符串(2017:10:12 18:39:21)
Thanks in提前..!
使用DateTime
检查字符串是否与特定的时间格式相匹配:
if (!DateTime::createFromFormat('H:i:s', '2017-10-08 17:23:30')) {
// time string does not match the H:i:s format
}
如果字符串所提供的格式相匹配,其结果将是一个DateTime
对象。如果没有,结果将是一个布尔值false
。所以你可以很容易地检查。
[不会工作](https://3v4l.org/cCW86)8:7:9。 – ishegg
嘿@ishegg检查我的答案,如果你需要知道一个 –
@ishegg是正确的,因为这不是一个有效的'H :i:s'格式化的时间字符串'H:i:s'需要几小时,几分钟和几秒钟的前导零, – rickdenhaan
我先用正则表达式匹配就如下面
if(preg_match("/\d{1,2}\:\d{1,2}\:\d{1,2}/",$value))
{
}
随后施加的分裂和验证各个部分时间为24,60和60
我会把它在'\ DateTime的构造函数()'例如'new \ DateTime(“2017-10-08 8:7:9”)'会成功创建DateTime的实例,也是17:34:38,但'\ DateTime(“2017-10-08 25:70:9“)'或'\ DateTime(”2017-10-08 string“)'将失败。您可以手动执行的一件事是不将空字符串添加到构造函数中,因为它创建的有效日期时间为00:00:00时间。 –
我可以使用date(“H:i:s”,strtotime($ value))来获得有效的时间,但是当我有一个字符串'kkkdls'时,它会给出一个时区时间,我猜...将需要去prematmatch –