[PR] [PHP] Różnica miedzy datami...

0

Próbuję napisać funkcję, która zwróci mi różnicę miedzy datami w postaci: ilość dni ilość godzin ilość minut ilość sekund czyli np:

pomiedzy 21.05.2006 0000 a 23.05.2006 0117 zwróci mi dni: 2 godzin: 1 minut: 15 sekund: 17 no i lekko utknąłem

  $a = mktime( 1, 15, 17, 5, 23, 06) -  mktime( 0, 0, 0, 5, 21, 06);
  $sekundy = $a % 60;
  $minuty = $a / 60;
  $godziny = $a / ( 60 * 60 );
  $dni = $a / ( 24 * 60 * 60 );
  echo "dni: " . $dni . " godzin: " . $godziny . " minut: " . $minuty . " sekund" . $sekundy;

no i otrzymuje cos takiego:

dni: 2 godzin: 49 minut: 2955 sekund: 17

i nie wiem co jest nie tak...

0

Ja bym to zrobił z dzieleniem całkowitym i tak:

$a = mktime( 1, 15, 17, 5, 23, 06) -  mktime( 0, 0, 0, 5, 21, 06);
  
  
  $dni = $a div ( 24 * 60 * 60 );
  $godziny = ($a-$dni) div ( 60 * 60 );
  $minuty = ($a-$dni-$godziny) div 60;
  $sekundy = $a % 60;

  echo "dni: " . $dni . " godzin: " . $godziny . " minut: " . $minuty . " sekund" . $sekundy;
0
mari6 napisał(a)

Ja bym to zrobił z dzieleniem całkowitym i tak:

$a = mktime( 1, 15, 17, 5, 23, 06) -  mktime( 0, 0, 0, 5, 21, 06);
  
  
  $dni = $a div ( 24 * 60 * 60 );
  $godziny = ($a-$dni) div ( 60 * 60 );
  $minuty = ($a-$dni-$godziny) div 60;
  $sekundy = $a % 60;

  echo "dni: " . $dni . " godzin: " . $godziny . " minut: " . $minuty . " sekund" . $sekundy;

no całkiem fajne ale wywala błąd na div (unexpected T_STRING)... chyba w PHP czegoś takiego jak div nie ma...

0
$a = mktime( 1, 15, 17, 5, 23, 06) -  mktime( 0, 0, 0, 5, 21, 06);


$sekundy = $a % 60;
$minuty = round($a /60 %60);
$godziny = round($a / ( 60 * 60 ));
$dni = round(($a)/86400),;
echo "dni: " . $dni . " godzin: " . $godziny . " minut: " . $minuty . " sekund " . $sekundy;
 
0

Div'a nie ma, ale jest reszta z dzielenia (mod) - %. Więc skrypt wyglądałby tak:

$sekundy = $a % 60;
$a = ($a - $sekundy) / 60;
$minuty = $a % 60;
$a = ($a - $minuty) /60;
$godziny = $a %24;
$dni = ($a - $godziny) / 24;

//Added: Valarius, coś w tym Twoim kodzie chyba nie tak... Zresztą, round nie zaokrągla zawsze w dół.

0

Wiec

floor
0

Adam Twój kod wyświetla dokładnie to co chciałem :] Dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1