Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Odejmowanie godzin
northwest
post
Post #1





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

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


Witam,
ja w PHP najłatwiej odjąć od siebie 2 godziny??
Mam np:
- 2008-09-28 14.00 - 2008-09-28 13.00 = 1h
- 2008-09-28 17.30 - 2008-09-28 12.15 = 5.15h
- 2008-09-28 23.58 - 2008-09-29 2.00 = 2.02h


Próbowałem takim sposobem:
$date = ( strtotime( "$czas1" ) - strtotime( "$czas2" ) ) / 3600;

ale nie bardzo chce mi to działać... potrzebuję wynik w godzinach i minutach...


Z góry dzięki za pomoc,
pozdrawiam Northwest
Go to the top of the page
+Quote Post
czachor
post
Post #2





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

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


  1. <?php
  2. $a = '2008-09-28 14:00';
  3. $b = '2008-09-28 13:00';
  4. echo strtotime($a) - strtotime($b); //3600
  5. ?>

Hm, mi to działa. Otrzymujesz wynik w sekundach, teraz sobie tylko odpowiednio zrób resztę.

BTW: nie używaj konstrukcji typu
  1. <?php
  2. "$czas1"
  3. ?>
- nie ma sensu wpychać zmiennych w cudzysłów.

Ten post edytował czachor 23.10.2008, 12:29:49
Go to the top of the page
+Quote Post
VGT
post
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

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


  1. <?php
  2. $godziny = floor(( strtotime( $czas1 ) - strtotime( $czas2 ) ) / 3600);
  3. $minuty = (( strtotime( $czas1 ) - strtotime( $czas2 ) ) / 60) % 60;
  4. ?>


Ten post edytował Bonastick 23.10.2008, 12:50:34
Go to the top of the page
+Quote Post
northwest
post
Post #4





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

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


hmmm wylaczony: 2008-09-28 13:14:02 - 2008-09-27 21:02:34 = 58288 sekund tak??
58288 : 3600 = 16,18h - tu jest oki

ale w przypadku:
2008-09-22 15:53:53 - 2008-09-22 15:53:51 = 2
2 : 3600= jakaś bzdura .... :/

Cytat(Bonastick @ 23.10.2008, 11:30:20 ) *
$godziny = floor(( strtotime( $czas1 ) - strtotime( $czas2 ) ) / 3600);
$minuty = (( strtotime( $czas1 ) - strtotime( $czas2 ) ) / 60) % 60;


a sekundy to będzie:
$sekundy = $minuty / 60; (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
czachor
post
Post #5





Grupa: Zarejestrowani
Postów: 897
Pomógł: 40
Dołączył: 16.12.2003
Skąd: Warszawa

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


2 sekundy to ~0,0006 godziny. Albo sprawdzaj czy wynik jest < 3600 albo odpowiednio zrób z tego minuty, sekundy...
Go to the top of the page
+Quote Post
northwest
post
Post #6





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

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


hmmm ja bym chciał podawać czas w formie godzina: minuty: sekundy

nie da się tego za 1 razem obliczyć??
$godziny = floor(( strtotime( $q2 ) - strtotime( $q1 ) ) / 3600);
$minuty = (( strtotime( $q2 ) - strtotime( $q1 ) ) / 60) % 60;
$sekundy = (( strtotime( $q2 ) - strtotime( $q1 ) ));

głupieją mi sekundy jak jest ich za dużo...:/
Go to the top of the page
+Quote Post
VGT
post
Post #7





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

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


w pierwszy poscie nic nie wspominales o sekundach...

poprawiona wersja:
  1. <?php
  2. $godziny = floor(( strtotime( $czas1 ) - strtotime( $czas2 ) ) / 3600);
  3. $minuty = floor((( strtotime( $czas1 ) - strtotime( $czas2 ) ) / 60) % 60);
  4. $sekundy = (strtotime( $czas1 ) - strtotime( $czas2 )) % 60;
  5. ?>


Ten post edytował Bonastick 23.10.2008, 12:50:17
Go to the top of the page
+Quote Post
northwest
post
Post #8





Grupa: Zarejestrowani
Postów: 788
Pomógł: 1
Dołączył: 17.09.2004

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


działa super, dzięki WIELKIE (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )))
Go to the top of the page
+Quote Post
Sławo
post
Post #9





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 10.03.2008
Skąd: Łódź

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


A jak zrobić aby wyswietlało np:

08:02 zamiast 8:2 ?
Go to the top of the page
+Quote Post
Spyder
post
Post #10





Grupa: Zarejestrowani
Postów: 269
Pomógł: 7
Dołączył: 12.10.2006
Skąd: Newcastle Upon Tyne

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


  1. <?php
  2. $pr_id = 1;
  3. $pr_id = sprintf("%03d", $pr_id);
  4. echo $pr_id;
  5.  
  6. //outputs 001
  7. ?>


W twoim przypadku zmien na 2
Go to the top of the page
+Quote Post
Sławo
post
Post #11





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 10.03.2008
Skąd: Łódź

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


A w tym kodzie:

  1. <?php
  2. $roznica = (strtotime($data2) - strtotime($data1));
  3. $min = floor($roznica / 60);
  4. $sec = $roznica-($min*60);
  5. $h = floor($min/60);
  6. $min = $min-($h*60);
  7. $dni = floor($h/24);
  8. $h = $h-($dni*24);
  9. $roznica ="$h:$min";
  10. ?>
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: 25.08.2025 - 07:30