修复时间字符串

时间:2012-10-17 17:35:50

标签: 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) && ($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 />');
?>

1 个答案:

答案 0 :(得分:3)

strtotime功能可以帮助您:

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

另外,请参阅date功能以获取可用的格式选项列表。

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

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
}