2016-12-12 9 views
0

時間は%RH:i:sの形式(+00:00:00または-00:00:00など)であり、それらを加算または減算したい15:30: - = -01負の時間と正の時間を計算する

1 /(午前10時○○分00秒)9時30分15秒+():24時間

例です。

2/22時00分00秒+ 3時〇〇分00秒= 25:00:00(ない1時〇〇分00秒+ 1DAY)

任意のアイデア?前もって感謝します !

EDIT:

は最後にそれをやりました。実際の正しい方法であるかどうかはわかりませんが、うまくいきます。フォーラムで見つかった別の機能の助けによってそれを見つけました。

function calc_hours($hour1,$hour2){ 

    $si1 = $hour1[0]; $si2 = $hour2[0]; 

    $hour1 = substr($hour1,1,8); 
    $hour2 = substr($hour2,1,8);   

    $secondes1=intval($si1.heure_to_secondes($hour1)); 
    $secondes2=intval($si2.heure_to_secondes($hour2)); 

    $somme=intval($secondes1+$secondes2); 

    //transfo en h:i:s 
    $s= ($somme % 60); 
    $m1= (($somme-$s)/60); 
    $m= ($m1 % 60); 
    $h= (($m1-$m)/60); 

    if($somme > 0) { $sif = '+'; } 
    $resultat=sprintf("%02d", $h).":".sprintf("%02d", abs($m)).":".sprintf("%02d", abs($s)).""; 
    return $sif.$resultat; 
} 

function heure_to_secondes($heure){ 
    $array_heure=explode(":",$heure); 
    $secondes=3600*$array_heure[0]+60*$array_heure[1]+$array_heure[2]; 
    return $secondes; 
} 

calc_hours( '+ 27:45:16'、 ' - 02:35:12');

+0

はい、 'date()'や 'datetime'クラスは使わないでください。 – Daan

+0

これ以上の情報はありませんか? date()またはdatetimeクラスを使用できない場合、私は何を使用しますか? – hellodracon

+0

自分で数式を作成する必要があります。日時は常に24時間で計算されます。おかげさまで – Daan

答えて

0

最後にしました。実際の正しい方法であるかどうかはわかりませんが、うまくいきます。フォーラムで見つかった別の機能の助けによってそれを見つけました。

function calc_hours($hour1,$hour2){ 

    $si1 = $hour1[0]; $si2 = $hour2[0]; 

    $hour1 = substr($hour1,1,8); 
    $hour2 = substr($hour2,1,8);   

    $secondes1=intval($si1.heure_to_secondes($hour1)); 
    $secondes2=intval($si2.heure_to_secondes($hour2)); 

    $somme=intval($secondes1+$secondes2); 

    //transfo en h:i:s 
    $s= ($somme % 60); 
    $m1= (($somme-$s)/60); 
    $m= ($m1 % 60); 
    $h= (($m1-$m)/60); 

    if($somme > 0) { $sif = '+'; } 
    $resultat=sprintf("%02d", $h).":".sprintf("%02d", abs($m)).":".sprintf("%02d", abs($s)).""; 
    return $sif.$resultat; 
} 

function heure_to_secondes($heure){ 
    $array_heure=explode(":",$heure); 
    $secondes=3600*$array_heure[0]+60*$array_heure[1]+$array_heure[2]; 
    return $secondes; 
} 

calc_hours( '+ 27:45:16'、 ' - 02:35:12');