37

「合計分」値でPHPの「DateInterval」値を取得しようとしています。入手方法は?単純な形式 ("%i 分") が機能しないようですか?

サンプルコードは次のとおりです。

$test = new \DateTime("48 hours");
$interval = $test->diff(new \DateTime());

合計日数で間隔を取得しようとすると、問題ありません。

echo $interval->format('%a total days');

出力として 2 日が表示されていますが、これはまったく問題ありません。「合計分」で値を取得する場合に取得しようとしているものなので、試しました:

echo $interval->format('%i total minutes');

これは機能していません。私の希望する出力を得るために助けていただければ幸いです。

4

5 に答える 5

28

あなたが持っているのが だけの位置に行き詰まっていて、DateInterval(私のように) 分、秒、または間隔の合計を取得する方法がないように思われる場合、解決策はゼロで DateTime を作成することです時間に間隔を追加し、結果のタイムスタンプを取得します。

$timeInterval      = //the DateInterval you have;
$intervalInSeconds = (new DateTime())->setTimeStamp(0)->add($timeInterval)->getTimeStamp();
$intervalInMinutes = $intervalInSeconds/60; // and so on
于 2014-05-15T10:12:43.180 に答える
14

DateInterval から totalTime を計算するだけの 2 つの関数を作成しました。年月を考慮することで精度を上げることができます。

function getTotalMinutes(DateInterval $int){
    return ($int->d * 24 * 60) + ($int->h * 60) + $int->i;
}

function getTotalHours(DateInterval $int){
    return ($int->d * 24) + $int->h + $int->i / 60;
}
于 2016-02-22T09:58:40.290 に答える