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 に答える