2016-12-12 2 views
0

Ich habe Dauern in% RH: i: s-Format (wie + 00: 00: 00 oder -00: 00: 00) und ich will sie hinzufügen oder subtrahieren (mit dem negativen) und nicht innerhalb von 24 StundenBerechnung von negativen und positiven Stunden

Ex:

1/(09:30:15 + (- 10.00.00)) = -01: 30: 15.

2/22:00:00 + 03:00:00 = 25:00:00 (nicht 01.00.00 + 1 Tag)

Jede Idee? Danke im Voraus !

EDIT:

tat es schließlich. Ich weiß nicht, ob es der richtige Weg ist, aber es funktioniert ganz gut. Habe es mit Hilfe einer anderen Funktion in einem Forum gefunden.

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; 
} 

Nennen Sie es mögen: calc_hours ('+ 27:45:16', '- 02.35.12');

+0

Ja, verwenden Sie nicht die 'date()' oder die 'datetime' Klasse. – Daan

+0

Weitere Informationen? Was verwende ich, wenn ich date() oder datetime class nicht verwenden kann? – hellodracon

+0

Sie müssen selbst eine Formel erstellen. Eine Datetime berechnet immer mit 24 Stunden. – Daan

Antwort

0

Schließlich tat es. Ich weiß nicht, ob es der richtige Weg ist, aber es funktioniert ganz gut. Habe es mit Hilfe einer anderen Funktion in einem Forum gefunden.

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; 
} 

Nennen Sie es mögen: calc_hours ('+ 27:45:16', '- 02.35.12');

Verwandte Themen