Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Operacje na czasie
migacz
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 15.04.2003
Skąd: Tczew

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
zombie
post
Post #2





Grupa: Zarejestrowani
Postów: 296
Pomógł: 0
Dołączył: 9.05.2002
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Tu poczytaj: http://www.pl.php.net/manual/pl/function.strtotime.php.
Go to the top of the page
+Quote Post
kwiateek
post
Post #3





Grupa: Zarejestrowani
Postów: 223
Pomógł: 0
Dołączył: 13.01.2003
Skąd: 3rd ball of mud behind a big ball of burning gas

Ostrzeżenie: (0%)
-----


Cytat

a szczegolnie komentarze (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
migacz
post
Post #4





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 15.04.2003
Skąd: Tczew

Ostrzeżenie: (10%)
X----


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ć
Go to the top of the page
+Quote Post
mrbungle
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.11.2005

Ostrzeżenie: (10%)
X----


Oto moja funkcja którą sobie sam do tego napisałem jakiś czas temu (IMG:http://forum.php.pl/style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post
#luq
post
Post #6





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


mrbungle nie lepiej:
  1. <?php
  2. $mkReturn = mktime( $time1 ) - mktime( $time2 );
  3. $timeReturn = date('H:i:s', $mkReturn);
  4. ?>
Go to the top of the page
+Quote Post
p_a_wik
post
Post #7





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.12.2012

Ostrzeżenie: (0%)
-----


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

Ten post edytował p_a_wik 30.12.2012, 18:48:39
Go to the top of the page
+Quote Post
szok
post
Post #8





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

Ostrzeżenie: (0%)
-----


http://php.net/manual/pl/class.datetime.php
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:45