Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Obliczanie czasu podróży
Forum PHP.pl > Forum > Przedszkole
ghastblood
Witam,

zacząłem pisać skrypcik obliczający czas podróży pomiędzy punktem a i b na podstawie osi x,y lecz mój problem pojawił się gdy chciałem wyświetlić czas podróży domyślana prędkość jednostki to 35min na pole 1,1.

jako że nie znam się na funkcjach time() mktime() date() stworzyłem coś takiego

  1. //wyświetla godzinę o której dotrze jednostka na miejsce
  2. $a = time() + 2100;
  3. $b = date("H:i:s",$a);
  4. //powinno wyświetlić czas jaki będzie szła
  5. $ab = 2100; //domyśla prędkość jednostki 35 min.
  6. $abcd = $o1x - ($o1x *2); //jako że wychodził mi wynik ujemy zmieniłem na dodatni
  7. $abcde = $abcd * $ab; //liczba pol * czas podróży
  8. $d = date("H:i:s", mktime(0,0,$abcde,0,0,0)); //powinno wyświetlić czas podróży a zwraca mi 00:00:00
grzeee
Nie rozumiem twojego skryptu ale z tego co widze to poczytaj dokładnie o funkcji
http://pl2.php.net/manual/pl/function.mktime.php
Musisz rozdzielić ten czas na poszczególne jednostki czasu sek, min, godz itp
nospor
$abcd = $o1x - ($o1x *2); //jako że wychodził mi wynik ujemy zmieniłem na dodatni
http://pl2.php.net/manual/en/function.abs.php
smile.gif


$abcde to liczba sekund podróży.
date("H:i:s" nie zamieni ci tego na ładny czas.
Chcesz mieć liczbę godzin to podziel $abcde przez 3600. Chcesz miec minuty to podziel resztę przez 60
ghastblood
8400 / 3600 = 2.3333333333333

i co dalej z tym zrobić
nospor
zaokrąglasz w dół do liczby całkowitej (2) - to twoje godziny.
teraz 8400- 2*3600 = reszta sekund. To dzielisz przez 60 i masz minuty.
Analogicznie wyliczasz pozostałą liczbę sekund. No pomyśl trochę. Przecież to są podstawowe obliczenia matematyczne
ghastblood
nie no z tym nie ma problemu ale może istnieje jakaś funkcja tak jak nie miałem pojęcia o abs
nospor
NIe ma problemu a się pytasz co z robić z 2.33333... czyli jednak problem jest tongue.gif

Nie, nie ma funkcji. Musisz te 4 linijki sam napisać. Co najwyżej zapakuje te 4 linijki w funkcję i będziesz miał funkcję
ghastblood
no ok dzięki za pomoc

a czy przypadkiem funkcja round się nie nadaje ?
Pawel_W
round zaokrągla raz do dołu raz do góry, zgodnie z zasadami, a przecież 7000s to nie 2h smile.gif
nospor
Patrz co tam jest napisane a nie latasz z takimi rzeczami na forum. Masz tam nawet przykłady....
http://pl.php.net/round
Zobacz w sekscję SEE ALSO
thek
Round zaokrągla według domyślnego algorytmu "do tego co bliżej", czyli round( 2.33 ) = 2, ale już round( 2.65 ) = 3

Najlepiej zresztą zobacz co robi dodatkowy parametr... HALF_UP, HALF_DOWN i jeszcze dwa inne w przypadku trafienia w połówkę.
ghastblood
Dzięki mam floor
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.