Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查时间字符串(不含日期部分)是否为H:i:s格式的php_Php_Datetime_Formatting_Timestamp - Fatal编程技术网

如何检查时间字符串(不含日期部分)是否为H:i:s格式的php

如何检查时间字符串(不含日期部分)是否为H:i:s格式的php,php,datetime,formatting,timestamp,Php,Datetime,Formatting,Timestamp,我有如下的时间字符串 8:7:9 17:34:38 如果我发现完全无效的字符串,如空字符串、其他文本值、带日期部分的字符串,我想检查字符串是否具有H:I:s格式(2017:10:12 18:39:21) 提前谢谢 使用DateTime检查字符串是否与特定的时间格式匹配: if (!DateTime::createFromFormat('H:i:s', '2017-10-08 17:23:30')) { // time string does not match the H:i:s for

我有如下的时间字符串

8:7:9

17:34:38

如果我发现完全无效的字符串,如空字符串、其他文本值、带日期部分的字符串,我想检查字符串是否具有H:I:s格式(2017:10:12 18:39:21)


提前谢谢

使用
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
。因此,您可以轻松地进行检查。

使用
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
。因此,您可以很容易地检查它。

我首先使用了下面这样的正则表达式匹配

if(preg_match("/\d{1,2}\:\d{1,2}\:\d{1,2}/",$value))
{
}

然后应用分割并验证24、60和60的单独时间部分。我首先使用了一个正则表达式匹配,如下所示

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字符串”)
将失败。您可以手动执行的一件事是不要将空字符串放入构造函数,因为它使用
00:00:00
time创建有效的日期时间。我可以使用date(“H:I:s”,strottime($value)获取有效时间但是当我有一个字符串“kkkdls”时,我想它会给出一个时区时间。我需要进行预匹配。我会将它放入
\DateTime()
的构造函数中,因此例如
new\DateTime(“2017-10-08 8:7:9”)
将成功创建DateTime的实例,也是17:34:38,但是
\DateTime(“2017-10-08 25:70:9”)
\DateTime(“2017-10-08字符串”)
将失败。您可以手动执行的一件事是不要将空字符串放入构造函数,因为它使用
00:00:00
时间创建有效的DateTime。我可以使用date(“H:I:s”,strotime($value)获取有效时间这个。但是当我有一个字符串“kkkdls”时,我想它会给出一个时区时间。需要的话,我需要去pregmatchey@ishegg查看我的答案one@ishegg正确,因为这不是一个有效的
H:i:s
格式的时间字符串。
H:i:s
要求前导零表示小时、分钟和秒。对,这就是我的意思。这是OP的第一个示例,因此它需要解决这个问题。@ishegg OP的问题是“我想检查字符串是否有H:I:s格式”,而第一个字符串没有(在任何本机支持的时间格式中,它不是有效的时间字符串).OP自己的答案适用于这种情况。@rickdenhaan是的,同意。这是他的要求和他的例子之间的不匹配。嘿@ishegg如果你需要知道,请查看我的答案one@ishegg正确,因为这不是有效的
H:i:s
格式的时间字符串。
H:i:s
要求前导零表示小时、分钟和秒这就是我的意思。这是OP的第一个例子,所以它需要解决这个问题。@ishegg OP的问题是“我想检查字符串是否有H:I:s格式”,而第一个字符串没有(在任何本机支持的时间格式中,它不是有效的时间字符串).OP自己的答案对这个案子有效。@rickdenhaan是的,同意。这是他的要求和他的例子之间的不匹配。