Php 固定时间字符串

Php 固定时间字符串,php,regex,Php,Regex,这应该很容易,但我不明白。我希望接收00:00:00格式的小时:分钟和返回小时:分钟:秒。以下几点远远不够。关于最佳方法的建议?多谢各位 <?php function fixTime($t) { $a = explode(':', trim($t)); return ((count($a)==2) && ($h=$a[0]) && ($m=$a[1]) && ($h>=0) &&a

这应该很容易,但我不明白。我希望接收00:00:00格式的小时:分钟和返回小时:分钟:秒。以下几点远远不够。关于最佳方法的建议?多谢各位

<?php
    function fixTime($t)
    {
        $a = explode(':', trim($t));
        return ((count($a)==2) && ($h=$a[0]) && ($m=$a[1]) && ($h>=0) && ($m>=0) && ($h<=23) && ($m<=59))?$h.':'.$m.':00':'00:00:00';
    }

    echo(fixTime('23:33').'<br />');
    echo(fixTime('05:00').'<br />');
    echo(fixTime('5:00').'<br />');
?>

该功能将帮助您:

function fixTime($t) {
    return date('H:i:s', strtotime($t));
}

echo fixTime('23:33'); // 23:33:00
echo fixTime('05:00'); // 05:00:00
echo fixTime('5:00'); // 05:00:00
此外,有关可用格式选项的列表,请参见函数

要验证此类简单输入,正则表达式可能会有所帮助:

function fixTime($t) {
    if (!preg_match('/^([01][0-9]|2[0-3]|[0-9]):[0-5][0-9]$/', $t)) {
        return false;
    }
    return date('H:i:s', strtotime($t));
}

echo fixTime('23:33'); // 23:33:00
echo fixTime('33:33'); // false

if (fixTime('33:33') === false) {
    // invalid date supplied
}
该功能将在以下方面帮助您:

function fixTime($t) {
    return date('H:i:s', strtotime($t));
}

echo fixTime('23:33'); // 23:33:00
echo fixTime('05:00'); // 05:00:00
echo fixTime('5:00'); // 05:00:00
此外,有关可用格式选项的列表,请参见函数

要验证此类简单输入,正则表达式可能会有所帮助:

function fixTime($t) {
    if (!preg_match('/^([01][0-9]|2[0-3]|[0-9]):[0-5][0-9]$/', $t)) {
        return false;
    }
    return date('H:i:s', strtotime($t));
}

echo fixTime('23:33'); // 23:33:00
echo fixTime('33:33'); // false

if (fixTime('33:33') === false) {
    // invalid date supplied
}

一些小猫$m=$a[1]为false,因此返回00:00:00,无论是否有小时。相同,但$h=$a[0]@PeeHaa的情况相反。是的,我可以加上:00,但我想做一些验证。一些小猫$m=$a[1]为false,因此返回00:00:00,无论是否有小时。相同,但$h=$a[0]@PeeHaa的情况相反。是的,我可以加上:00,但我想进行某种验证。对这两种解决方案之间的优势有什么看法吗?嗯,验证输入的正则表达式只需要少量的额外处理,因此,我倾向于继续使用第二种方法进行验证,除非您能够确信您的输入始终是正确的valid@PeeHaa很好,为后代编辑了正则表达式。我没有看到关于为无效时间返回
00:00:00
的评论,如果这是期望的行为,那么regex确实是不必要的。有没有关于这两种解决方案之间的优势的想法?嗯,验证输入的正则表达式只需要少量的额外处理,因此,我倾向于继续使用第二种方法进行验证,除非您能够确信您的输入始终是正确的valid@PeeHaa很好,为后代编辑了正则表达式。我没有看到关于为无效时间返回
00:00:00
的评论,如果这是期望的行为,那么正则表达式确实是不必要的。