Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Php验证24小时时间格式_Php_Date_Time - Fatal编程技术网

Php验证24小时时间格式

Php验证24小时时间格式,php,date,time,Php,Date,Time,我允许用户从00:00:00到23:00:00选择一个小时,并需要检查他们提交的格式是否正确。是否有验证24小时格式的正则表达式或php函数,例如HH:MM:SS 我找到了一些正则表达式示例,但我正在验证的24小时时间始终设置为00,以分钟和秒为单位。只有时间不同 比如说 18:00:00, 23:00:00, 01:00:00 这与包括秒在内的24小时时间相匹配 ([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] 如果你只想要00分和秒,那么 ([01]?[

我允许用户从
00:00:00
23:00:00
选择一个小时,并需要检查他们提交的格式是否正确。是否有验证24小时格式的正则表达式或php函数,例如
HH:MM:SS

我找到了一些正则表达式示例,但我正在验证的24小时时间始终设置为
00
,以分钟和秒为单位。只有时间不同

比如说

18:00:00, 23:00:00, 01:00:00

这与包括秒在内的24小时时间相匹配

([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]
如果你只想要00分和秒,那么

([01]?[0-9]|2[0-3]):00:00
试试这个

$time="23:00:00";

preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $time);

这里是最后一个样品,可以随时使用

$myTime = '23:00:00';

$time = preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $myTime);

if ( $time == 1 )
{
  // make a error!
}
else
{
  // make a error!
}

必须是正则表达式吗?您可以轻松地使用PHPs
strotime
-函数来验证日期和时间(也可以在没有日期的情况下工作)。
strotime
如果给定的时间无效,则返回
false
-1
在PHP 5.1之前)。因此,不要忘记使用
=
操作数

if (strtotime("12:13") === false) { echo("Wrong Time!"); } // Echos nothing
if (strtotime("19:45") === false) { echo("Wrong Time!"); } // Echos nothing
if (strtotime("17:62") === false) { echo("Wrong Time!"); } // Echos 'Wrong Time!'

这对我很有吸引力

$time = "23:59:60";    
preg_match("/^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/", $time)

通过此函数进行检查,您可以将此函数添加到
Laravel全局辅助函数文件的CodeIgniter辅助文件中,并多次调用它


虽然选择的答案绝对不错,但我并不坚持强加格式。我的想法是,如果你能解释数据,那么格式就无关紧要了。当然,你的格式越失败,你做出的假设越多,你承担的风险也就越大。但提供确认屏幕通常会修正假设。因此,我写道:

/* Sample usage:
 *  echo '<ol>',
 *       '<li>validateTime ("13:23") = ',       (validateTime ('13:23')     ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("03:23 ") = ',      (validateTime ('03:23 ')    ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("03:23 Am") = ',    (validateTime ('03:23 aM')  ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("03:23Am") = ',     (validateTime ('03:23aM')   ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("03:23 pM") = ',    (validateTime ('03:23 pM')  ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("323") = ',         (validateTime ('323')       ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("058") = ',         (validateTime ('058')       ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("1323pm") = ',      (validateTime ('1323pm')    ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("1323am") = ',      (validateTime ('1323am')    ? 'TRUE' : 'FALSE'), '</li>',   // TRUE - I think this one makes sense, but I'm not sure. 13th hour of the day, starting in the AM?
 *       '<li>validateTime ("323pm") = ',       (validateTime ('323pm')     ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("3") = ',           (validateTime ('3')         ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("3PM") = ',         (validateTime ('3PM')       ? 'TRUE' : 'FALSE'), '</li>',   // TRUE
 *       '<li>validateTime ("13:73") = ',       (validateTime ('13:73')     ? 'TRUE' : 'FALSE'), '</li>',   // FALSE
 *       '<li>validateTime ("25:23") = ',       (validateTime ('25:23')     ? 'TRUE' : 'FALSE'), '</li>',   // FALSE
 *       '<li>validateTime ("Any crap") = ',    (validateTime ('Any crap')  ? 'TRUE' : 'FALSE'), '</li>',   // FALSE
 *       '</ol>';
 */
function validateTime ($testTime)
{
    define ('regExpPattern', '/^([01]?[0-9]|2[0-3])([:]?[0-5][0-9])?[ ]?([apAP][mM])?$/');

/*      regExpPattern explanation
            /^          # String must begin with.
            (           # Start group.
            [01]        # A 0 or 1.
            ?           # Optionally.
            [0-9]       # 0 through 9.
            |           # Or.
            2           # 2.
            [0-3]       # 0 through 3.
            )           # End of group. This group will match hour in a 24 hour clock.
            (           # New group.
            [:]?        # Optional colon.
            [0-5][0-9]  # Minutes, 00 through 59.
            )           # End of group.
            ?           # Make previous group optional.
            [ ]?        # Optional space.
            (           # New group.
            [apAP]      # One of the following 'apAP'.
            [mM]        # One of the following 'mM'.
            )           # End of group.
            ?           # Make previous group optional. This allows for things like 3 o'clock.
            $/          # Must end with. */

    return preg_match (regExpPattern, trim ($testTime));
}   // function validateTime ($testDate)
/*示例用法:
*回音“,
*“
  • validateTime(“13:23”)=”,(validateTime(“13:23”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“03:23”)=”,(validateTime(“03:23”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“03:23 Am”)=”,(validateTime(“03:23 Am”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“03:23Am”)=”,(validateTime(“03:23Am”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“03:23 pM”)=”,(validateTime(“03:23 pM”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“323”)=”,(validateTime(“323”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“058”)=”,(validateTime(“058”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“1323pm”)=”,(validateTime(“1323pm”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“1323am”)=”,(validateTime(“1323am”)?“TRUE”:“FALSE”),“
  • ”,//TRUE-我认为这是有意义的,但我不确定。一天中的第13个小时,从上午开始? *“
  • validateTime(“323pm”)=”,(validateTime(“323pm”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“3”)=”,(validateTime(“3”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“3PM”)=”,(validateTime(“3PM”)?“TRUE”:“FALSE”),“
  • ”,//TRUE *“
  • validateTime(“13:73”)=”,(validateTime(“13:73”)?“TRUE”:“FALSE”),“
  • ”,//FALSE *“
  • validateTime(“25:23”)=”,(validateTime(“25:23”)?“TRUE”:“FALSE”),“
  • ”,//FALSE *“
  • validateTime(“任何垃圾”)=”,(validateTime(“任何垃圾”)?“TRUE”:“FALSE”),“
  • ”,//FALSE * ''; */ 函数validateTime($testTime) { 定义('regExpPattern','/^([01]?[0-9]| 2[0-3])([:]?[0-5][0-9])?[]([apAP][mM])?$/); /*正则表达式模式解释 /^#字符串必须以开头。 (#启动组。 [01]#0或1。 ?#可选。 [0-9]#0到9。 |#或。 2 # 2. [0-3]#0到3。 )#小组结束。该小组将在24小时制中比赛一小时。 (#新集团。 [:]?#可选冒号。 [0-5][0-9]#分钟,00到59。 )#小组结束。 ?#将上一组设置为可选。 []?#可选空间。 (#新集团。 [apAP]#以下“apAP”之一。 [mM]#以下“mM”之一。 )#小组结束。 ?#将前一组设置为可选。这允许3点钟之类的时间。 $/#必须以结尾*/ 返回preg_匹配(regExpPattern,trim($testTime)); }//函数validateTime($testDate)
    请让我知道,如果你看到改进或错误

    我应该接受其他分隔符吗。如果有人选择进入13.45呢?这应该是一个有效的时间吗?毕竟,我知道用户的意思

    现在,下一步是接受用户对所有可能格式的输入,并使其对SQL友好


    享受,

    用户可以更改他们所做的选择吗?例如,输入“25:00”或“香蕉”?SACLLEN的答案是你所要求的,但是如果你的真正问题是给用户输入00到23之间的数字,考虑使用下拉菜单。“ZUUL当然可以,他们从下拉列表中选择时间是一个真正的问题,不管UI是什么。”马修同意,只是想找出用户“挑”的方法!查看验证过程中是否存在问题!我忘了问..下面的分隔符对正则表达式2正确吗<代码>/^([01]?[0-9]| 2[0-3]):00:00$/
    表示字符串的开始和结束。因此,有了这些,时间周围就不会有任何东西了。所以是的,这不仅有效,而且是正确的做法。太棒了!感谢您的善意确认:)非常有效!(救了我一天)。