Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Operacje na czasie
Forum PHP.pl > Forum > PHP
migacz
Mam następujący problem. Pobieram z bazy pola w formacie time powiedzmy że czas1 i czas2. Musze wykonać na tym podstawowe dzialania tzn dodawanie i odejmowanie. jak pobrać lub sformatować te dane aby wynik tez był wyświtlany w formie czasu. (czas1=9:00 czas2=10:15 czas2-czas1=1:15)
Z góry dzięki
zombie
Tu poczytaj: http://www.pl.php.net/manual/pl/function.strtotime.php.
kwiateek
Cytat

a szczegolnie komentarze biggrin.gif
migacz
albo jestem ślepy, albo jeszcze za mało znam php ale nie doszukałem się rozwiązania mojego problemu na ww stronach. moze ktoś zna jakieś inne strony gdzie bym mogl tego poszukać
mrbungle
Oto moja funkcja którą sobie sam do tego napisałem jakiś czas temu winksmiley.jpg
  1. <?php
  2. function TimeOperation($time1, $op, $time2)
  3.    {
  4.        
  5.        // przygotowanie danych
  6.        $trans = array(60*60, 60, 1);
  7.        
  8.        $t1 = explode(':', $time1);
  9.        $t2 = explode(':', $time2);
  10.        
  11.        $time1 = 0;
  12.        
  13.        for($i=0; $i<3; $i++)
  14.        {
  15.            if(array_key_exists($i, $t1))
  16.                $time1 += $trans[$i]*$t1[$i];
  17.        }
  18.        
  19.        
  20.        $time2 = 0;
  21.        
  22.        for($i=0; $i<3; $i++)
  23.        {
  24.            if(array_key_exists($i, $t2))
  25.                $time2 += $trans[$i]*$t2[$i];
  26.        }
  27.        
  28.        
  29.        // jesli dodawanie
  30.        if($op == '+')
  31.            $time = $time1 + $time2;
  32.        elseif($op == '-')
  33.            $time = $time1 - $time2;
  34.        else
  35.            return(false);
  36.        
  37.        $out = array();
  38.        
  39.        for($i=0; $i<3; $i++)
  40.        {
  41.            $out[$i] = $time%60;
  42.            
  43.            if(strlen($out[$i]) < 2)
  44.                $out[$i] = '0'.$out[$i];
  45.            
  46.            $time = intval($time/60);
  47.        }
  48.        
  49.        return(implode(':', array_reverse($out)));
  50.        
  51.    }
  52. ?>
#luq
mrbungle nie lepiej:
  1. <?php
  2. $mkReturn = mktime( $time1 ) - mktime( $time2 );
  3. $timeReturn = date('H:i:s', $mkReturn);
  4. ?>
p_a_wik
Witam

Jeśli mogę prosić o pomoc w tym temacie
mam podobny problem jak kolega i wykorzystałem ostatnią poradę, ale system nie zwraca mi nic prócz: (00:00.000000)
Dane wejściowe w formacie mm:ss.uu
$c1=00:12.79
$c2=00:35.77
wynik (00:00.000000)

  1. <?php
  2. $mkReturn = mktime( $c2 ) - mktime( $c1 );
  3. $timeReturn = date('i:s.u', $mkReturn);
  4. ?>


Co zrobiłem źle ??
Czy da się policzyć różnice tylko na takich dancyh ??
Jak sformatować wyjście tylko do dwóch setnych 00:00.00 ??

Po włączeniu wyświetlania błędów otrzymałem następujący komunikat:
Notice: A non well formed numeric value encountered in wskazujący na linię:
$mkReturn = mktime( $c2 ) - mktime( $c1 );


Z góry dziękuje za odpowiedzi
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.