Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Obliczanie czasu podróży
ghastblood
post
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


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


Ten post edytował ghastblood 5.05.2011, 08:21:31
Go to the top of the page
+Quote Post
grzeee
post
Post #2





Grupa: Zarejestrowani
Postów: 102
Pomógł: 5
Dołączył: 24.11.2006

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




$abcd = $o1x - ($o1x *2); //jako że wychodził mi wynik ujemy zmieniłem na dodatni
http://pl2.php.net/manual/en/function.abs.php
(IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
ghastblood
post
Post #4





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


8400 / 3600 = 2.3333333333333

i co dalej z tym zrobić
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
ghastblood
post
Post #6





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


nie no z tym nie ma problemu ale może istnieje jakaś funkcja tak jak nie miałem pojęcia o abs
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




NIe ma problemu a się pytasz co z robić z 2.33333... czyli jednak problem jest (IMG:style_emoticons/default/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ę
Go to the top of the page
+Quote Post
ghastblood
post
Post #8





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


no ok dzięki za pomoc

a czy przypadkiem funkcja round się nie nadaje ?

Ten post edytował ghastblood 5.05.2011, 08:59:30
Go to the top of the page
+Quote Post
Pawel_W
post
Post #9





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


round zaokrągla raz do dołu raz do góry, zgodnie z zasadami, a przecież 7000s to nie 2h (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
thek
post
Post #11





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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ę.
Go to the top of the page
+Quote Post
ghastblood
post
Post #12





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

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


Dzięki mam floor
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: 2.10.2025 - 20:28