2

yyyy-mm-dd hh:mm:ss 形式の日付から経過時間を減算または加算するにはどうすればよいですか?
つまり、 16:49:13 を 2012-06-18 22:03:18 に追加するにはどうすればよいですか?

また、2012-06-19 14:52:31 から 16:49:13 を減算するにはどうすればよいですか?
結果を hh:mm:ss の形式にする必要があります

4

4 に答える 4

1

私の簡単なアイデア:

<?php

$a="16:49:13"; 
$e=explode(':', $a);

$y="2012-06-18 22:03:18";

echo  date('d-m-Y h:i:s',strtotime("+ $e[0] hours $e[1] minutes $e[2] seconds ",strtotime($y)));

出力: 19-06-2012 02:52:31

于 2012-07-29T20:32:56.793 に答える
0

と のような 2 つの時刻が与えられた場合、2 つの日付の合計から得られる時間、分、秒の合計を表す HH:MM:SS 形式のままで出力する必要があります ( を出力する必要があります23:54:23) 。16:49:1340:43:36

この機能を使用できます:

function addTime($t1, $t2)
{
    $t1a = explode(':', $t1);
    $t2a = explode(':', $t2);

    $h = $t1a[0] + $t2a[0] + ((($t1a[1] + $t2a[1]) / 60) >= 1 ? 1 : 0);
    $m = (($t1a[1] + $t2a[1]) % 60) + ((($t1a[2] + $t2a[2]) / 60) >= 1 ? 1 : 0);
    $s = ($t1a[2] + $t2a[2]) % 60;

    if($m == 60)
    {
        $h++;
        $m = 0;
    }

    $h = strlen($h) < 2 ? '0'.$h : $h;
    $m = strlen($m) < 2 ? '0'.$m : $m;
    $s = strlen($s) < 2 ? '0'.$s : $s;

    return "$h:$m:$s";
}

$t1 = '23:54:23'; 
$t2 = '16:49:13';

echo addTime($t1, $t2); // 40:43:36
于 2012-07-29T20:28:31.550 に答える
0

strtotime 関数を使用する別の方法を次に示します。

$myTime      = strtotime('2012-06-18 22:03:18');
$delta       = (16 * 60 * 60) + (49 * 60) + 13;
$myTimeMinus = $myTime - $delta;
$myTimePlus  = $myTime + $delta;
echo date('Y-m-d H:i:s', $myTimeMinus);

//2012-06-18 05:14:05

echo date('Y-m-d H:i:s', $myTimePlus);
// 2012-06-19 14:52:31
于 2012-07-29T21:32:16.383 に答える
0

これには、PHP のDateTime オブジェクトを利用できます。次のようなもの:-

たす:-

$dateTime = new DateTime("2012-06-18 22:03:18");
list($hours, $minutes, $seconds) = explode(":", "16:49:13");
$seconds += $minutes * 60;
$seconds += $hours * 3600;
$interval = new DateInterval("PT{$seconds}S");
$dateTime->add($interval);

減算するには: -

$dateTime = new DateTime("2012-06-18 22:03:18");
list($hours, $minutes, $seconds) = explode(":", "16:49:13");
$seconds += $minutes * 60;
$seconds += $hours * 3600;
$interval = new DateInterval("PT{$seconds}S");
$dateTime->sub($interval);

次に、DateTime::format()関数を使用して、任意の方法で結果を出力します。

datetime オブジェクトは、うるう年、タイム ゾーンなどを自動的に処理します。これらはすべて、時間の計算を簡単に面倒なものにする可能性があるものです..

于 2012-07-29T20:35:22.577 に答える