Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odejmowanie godzin
Forum PHP.pl > Forum > Przedszkole
northwest
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
czachor
  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.
VGT
  1. <?php
  2. $godziny = floor(( strtotime( $czas1 ) - strtotime( $czas2 ) ) / 3600);
  3. $minuty = (( strtotime( $czas1 ) - strtotime( $czas2 ) ) / 60) % 60;
  4. ?>
northwest
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; questionmark.gif
czachor
2 sekundy to ~0,0006 godziny. Albo sprawdzaj czy wynik jest < 3600 albo odpowiednio zrób z tego minuty, sekundy...
northwest
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...:/
VGT
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. ?>
northwest
działa super, dzięki WIELKIE smile.gif)))
Sławo
A jak zrobić aby wyswietlało np:

08:02 zamiast 8:2 ?
Spyder
  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
Sławo
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. ?>
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.