0

这应该很容易,但我不明白。我希望收到小时:分钟,并以 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 />');
?>
4

1 回答 1

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

此外,请参阅日期函数以获取可用的格式选项列表。

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

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
}
于 2012-10-17T17:39:38.330 回答