1

PHPで時間を追加したいのですが、何時間もグーグルで試してみた後でも解決策を見つけることができません。

私の値は次のとおりです。

$newTotal = '00:45:00';
$oldTotal = '00:16:00';

この 2 つを足して 01:01:00 とします。

私が本当に必死になっている例を教えてください!:p

前もって感謝します、

4

4 に答える 4

3

を使用strtotime()して Unix タイムスタンプに変換し、整数として追加します。

$newTotal = '00:45:00';
$oldTotal = '00:16:00';

$total = strtotime($newTotal) + strtotime($oldTotal);

hh:mm:ss再びフォーマットするには、次を使用しdate()ます。

echo date('H:i:s', $total);

これは与える:

01:01:00

于 2012-07-04T19:53:00.533 に答える
2

これらの値が常にそのように見える場合は、substr() で分解できます

$hours1 = substr($newTotal, 0, 2);

などなど。そして、単に秒を合計し、除算と mod を実行して、時間までバブルアップするだけです。

$secondstotal = $seconds1+$seconds2; 
$restseconds = $secondstotal % 60;
$minutesfromseconds = floor($restseconds / 60);

$minutestotal = $minutes1+$minutes2+$minutesfromseconds;

于 2012-07-04T19:50:14.460 に答える
1

エラーを最小限に抑えるために開始日を保持します。

<?php
$origin   = '00:00:00';
$newTotal = '00:45:00';
$oldTotal = '00:16:00';

$added = strtotime($newTotal) + (strtotime($oldTotal) - strtotime($origin));

echo date('H:i:s', $added );

出力:

01:01:00

追加後の時間が23:59:59を超えると、間違った結果が得られることに注意してください。

于 2012-07-04T20:01:13.143 に答える
1

時間関数のない別のソリューション:

function sumtotal($a,$b) {
    $i = explode(':',$a);
    $j = explode(':',$b); // 0hh:1mm:2ss
    $k = array(0,0,0,0); // 0days:1hours:2minutes:3seconds
    $k[3] = $i[2]+$j[2];
    $k[2] = (int)($k[3]/60)+$i[1]+$j[1];
    $k[1] = (int)($k[2]/60)+$i[0]+$j[0];
    $k[0] = (int)($k[1]/24);
    $k[3] %= 60;
    $k[2] %= 60;
    $k[1] %= 24;
    if ($k[3]<10) $k[3] = '0'.$k[3];
    if ($k[2]<10) $k[2] = '0'.$k[2];
    if ($k[1]<10) $k[1] = '0'.$k[1];
    return $k[0].' days : '.$k[1].' hours : '.$k[2].' minutes : '.$k[3].' seconds';
}

$newTotal = '01:45:21';
$oldTotal = '03:16:56';
echo sumtotal($newTotal,$oldTotal); // result:  0 days : 05 hours : 02 minutes : 17 seconds
于 2012-07-04T20:28:38.890 に答える