• 08-06-2015, 14:48:48
    #1
    Merhaba,
    Elimde şöyle bir format var :
    Örnek : 35:30 saat'e 01:50 eklemek istiyorum. Sonuç : 36:20 olmalı. Nasıl yaparım? strtotime ile denediğimde 23:00 den sonrasını 00:00 olarak atıyor. Buda işime yaramıyor.
  • 08-06-2015, 15:01:56
    #2
    <?php
    function timetoTime($time) {
    	$timeArr = array_reverse(explode(":", $time));
    	$seconds = 0;
    	foreach ($timeArr as $key => $value) {
    		if ($key > 2) break;
    		$seconds += pow(60, $key) * $value;
    	}
    	return $seconds;
    }
    $tarih1 	= timetoTime('35:30');
    $tarih2 	= timetoTime('01:50');
    $tarihson 	= gmdate($tarih1+$tarih2);
    ?>


    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 15:01:56 -->-> Daha önceki mesaj 14:53:46 --

    son kısmı şu şekilde düzeltirsin.

    $tarihson	= $tarih1 + $tarih2;
    echo ($tarihson >= 3600) ? gmdate('H:i:s',$tarihson):gmdate('i:s',$tarihson);
  • 08-06-2015, 15:04:31
    #3
    Teşekkürler çok işime yarayacak.

    Edit :
    $tarih1 = timetoTime('80:30');
    $tarih2 = timetoTime('01:50');
    sunucu 82:20 vermiyor. Bir sınırlamamı var?

    trky adlı üyeden alıntı: mesajı görüntüle
    <?php
    function timetoTime($time) {
    	$timeArr = array_reverse(explode(":", $time));
    	$seconds = 0;
    	foreach ($timeArr as $key => $value) {
    		if ($key > 2) break;
    		$seconds += pow(60, $key) * $value;
    	}
    	return $seconds;
    }
    $tarih1 	= timetoTime('35:30');
    $tarih2 	= timetoTime('01:50');
    $tarihson 	= gmdate($tarih1+$tarih2);
    ?>


    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 15:01:56 -->-> Daha önceki mesaj 14:53:46 --

    son kısmı şu şekilde düzeltirsin.

    $tarihson	= $tarih1 + $tarih2;
    echo ($tarihson >= 3600) ? gmdate('H:i:s',$tarihson):gmdate('i:s',$tarihson);
  • 08-06-2015, 15:19:49
    #4
    <?php 
    function timetoTime($time) { 
        $timeArr = array_reverse(explode(":", $time)); 
        $seconds = 0; 
        foreach ($timeArr as $key => $value) { 
            if ($key > 2) break; 
            $seconds += pow(60, $key) * $value; 
        } 
        return $seconds; 
    } 
    $tarih1     = timetoTime('35:30'); 
    $tarih2     = timetoTime('01:50'); 
    $tarihson   = $tarih1 + $tarih2; 
    echo ($tarihson >= 3600) ? gmdate('H:i:s',$tarihson):gmdate('i:s',$tarihson);  
    ?>

    80 diye bir dakika olmadığı için sonuç vermemesi normal. 60 dakika üzerinden hesap yapıyor.

    82:20 yerine 01:22:20 yazar
  • 08-06-2015, 16:08:11
    #5
    <?php 
    function timetoTime($time) { 
        $timeArr = array_reverse(explode(":", $time)); 
        $seconds = 0; 
        foreach ($timeArr as $key => $value) { 
            if ($key > 2) break; 
            $seconds += pow(60, $key) * $value; 
        } 
        return $seconds; 
    }
    function timePlus($times,$type = false) {
    	$secs	= 0;
    	foreach($times as $time)  { $secs = $secs + timetoTime($time); }
    	if($type == false) {
    		return ($secs >= 3600) ? gmdate('H:i:s',$secs):gmdate('i:s',$secs);
    	} else {
    		$minute	= floor(($secs / 60)); if($minute < 10) { $minute = '0'.$minute; }
    		$second	= $secs - ($minute * 60); if($second < 10) { $second = '0'.$second; }
    		return $minute.':'.$second;
    	}
    }
    $zamanlar	= array('80:30','01:50','06:20');
    echo timePlus($zamanlar,true);
    echo '<br />';
    echo timePlus($zamanlar,false);
    ?>
  • 08-06-2015, 16:37:04
    #6
    Teşekkürler. Peki bunu çıkartma işlemi olarak nasıl kullanırız?
    Örnek :81:10 - 01:20 = 79:50

    trky adlı üyeden alıntı: mesajı görüntüle
    <?php 
    function timetoTime($time) { 
        $timeArr = array_reverse(explode(":", $time)); 
        $seconds = 0; 
        foreach ($timeArr as $key => $value) { 
            if ($key > 2) break; 
            $seconds += pow(60, $key) * $value; 
        } 
        return $seconds; 
    }
    function timePlus($times,$type = false) {
    	$secs	= 0;
    	foreach($times as $time)  { $secs = $secs + timetoTime($time); }
    	if($type == false) {
    		return ($secs >= 3600) ? gmdate('H:i:s',$secs):gmdate('i:s',$secs);
    	} else {
    		$minute	= floor(($secs / 60)); if($minute < 10) { $minute = '0'.$minute; }
    		$second	= $secs - ($minute * 60); if($second < 10) { $second = '0'.$second; }
    		return $minute.':'.$second;
    	}
    }
    $zamanlar	= array('80:30','01:50','06:20');
    echo timePlus($zamanlar,true);
    echo '<br />';
    echo timePlus($zamanlar,false);
    ?>
  • 08-06-2015, 16:57:14
    #7
    function timeMinus($times,$type = false) {
    foreach($times as $time) { if(!@$secs) { $secs = timetoTime($time); } else { $secs = $secs - timetoTime($time); } }
    if($type == false) {
    return ($secs >= 3600) ? gmdate('H:i:s',$secs):gmdate('i:s',$secs);
    } else {
    $minute = floor(($secs / 60)); if($minute < 10) { $minute = '0'.$minute; }
    $second = $secs - ($minute * 60); if($second < 10) { $second = '0'.$second; }
    return $minute.':'.$second;
    }
    }



    Telefondan bu kadar yapabildim test edersin

    timeMinus(array('81:44','26:12'),true);


    Sent from my iPhone using Tapatalk
  • 08-06-2015, 17:13:34
    #8
    Teşekkürler işe yaradı.

    trky adlı üyeden alıntı: mesajı görüntüle
    function timeMinus($times,$type = false) {
    foreach($times as $time) { if(!@$secs) { $secs = timetoTime($time); } else { $secs = $secs - timetoTime($time); } }
    if($type == false) {
    return ($secs >= 3600) ? gmdate('H:i:s',$secs):gmdate('i:s',$secs);
    } else {
    $minute = floor(($secs / 60)); if($minute < 10) { $minute = '0'.$minute; }
    $second = $secs - ($minute * 60); if($second < 10) { $second = '0'.$second; }
    return $minute.':'.$second;
    }
    }



    Telefondan bu kadar yapabildim test edersin

    timeMinus(array('81:44','26:12'),true);


    Sent from my iPhone using Tapatalk