2

会社で使用しているソフトウェアから生成された XML ファイルを解析するための PHP スクリプトを作成しています。時間形式はこのようにフォーマットされています。時間を解析する簡単な方法であるかどうか疑問に思っています。

<duration>PT1H23M5S</duration> // This is the XML format

私はそれを解析するためのスクリプトを持っていますが、必要以上に長すぎて複雑になる可能性があると感じています:

    if( strpos($duration, "H") == false ) {
      $duration = substr_replace($duration, "00:", 0, 0);
    }
$duration = preg_replace("#PT#", "", $duration);
$duration = preg_replace("#H#", ":", $duration);
$duration = preg_replace("#M#", ":", $duration);
$duration = preg_replace("#S#", "", $duration);

// Prepare to process values under 10 (add trailing 0)
list($hour, $minute, $second) = explode(":", $duration);
if($hour < 10 and $hour != "00") {
    $hour = substr_replace($hour, "0", 0, 0); // adds a 0 behind digit EG 09 H
}
if($minute < 10) {
    $minute = substr_replace($minute, "0", 0, 0);
}
if($second < 10 and $second > 0) {
    $second = substr_replace($second, "0", 0, 0);
}
if($second == "") {
    $second = "00";
}
$duration = $hour . ":" . $minute . ":" . $second;

返信ありがとうございます。

4

1 に答える 1

4

DateInterval()クラスを使用します。

$d = new DateInterval($duration);
echo $d->format('%h hours, %i minutes, %S seconds');
于 2013-10-09T00:41:35.767 に答える