Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Czas o godzine za dużo
loofkens
post 16.06.2009, 19:15:37
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.06.2009

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


Może dla wielu z was problem jest banalny ale dla mnie początkującego nie do ugryzienia. Mianowicie chodzi mi o to że do wyniku dopisywana jest jedna godzina i nie wiem jak to ugryść. Zaznacze że wstawiam np.5 i powinno być 00:12:00 a jest 01:12:00
CODE
<?php
$wynik = (round(3600/$_POST['predkosc']));
$a = date("H:i:s",$wynik);
echo 'czas - '.$a;
?>

Kombinowałem na różne sposoby i szukałem w kilku miejscach i dalej nie wiem o co kaman. Czy moglibyście mi to wytłumaczyć dlaczego tak się dzieje. Z góry dziękuje
Go to the top of the page
+Quote Post
marcus753
post 16.06.2009, 19:16:49
Post #2





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

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


przerób sobie ten skrypt

  1. <?php
  2. $godzina = date("H");
  3. $godzina++;
  4. $data= date("Y.m.d ".$godzina.":i:s");
  5. ?>


Ten post edytował marcus753 16.06.2009, 19:17:36


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
wookieb
post 16.06.2009, 19:17:39
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Popraw strefę czasową http://pl.php.net/manual/pl/function.date-...imezone-set.php


--------------------
Go to the top of the page
+Quote Post
Pawel_W
post 16.06.2009, 19:18:58
Post #4





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

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


ee nie bardzo rozumiem co ten skrypt ma robić, mógłbyś to wyjaśnić?
Go to the top of the page
+Quote Post
nospor
post 16.06.2009, 19:19:38
Post #5





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




@marcus grunt to dobre obejscie winksmiley.jpg

mozesz tez uzyc:
http://pl2.php.net/manual/pl/function.gmdate.php

ps: swoją drogą faktycznie dziwny ten skrypt


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
loofkens
post 16.06.2009, 19:25:26
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.06.2009

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


Obiekt w ciągu 1 godziny pokonuje np.5 pól. wynikiem jest ile czasu potrzebuje na pokonanie 1 pola
Go to the top of the page
+Quote Post
marcus753
post 16.06.2009, 19:28:04
Post #7





Grupa: Zarejestrowani
Postów: 281
Pomógł: 3
Dołączył: 8.06.2009
Skąd: Kraków

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


ten skrypt ma za zadanie dodać jedną godzine i przypisać pełną date wraz z godziną do zmiennej...


--------------------
Cokolwiek zostanie upuszczone na uklad elektroniczny, spadnie zawsze tam gdzie wyrzadzi najwiecej szkody.
Go to the top of the page
+Quote Post
loofkens
post 16.06.2009, 19:31:50
Post #8





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.06.2009

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


przy wstawieniu np 5 ma mi dać wynik 12 minut. tutaj data nie jest mi potrzebna gdyż tylko czas jest mi potrzebny do dalszych obliczeń smile.gif
Go to the top of the page
+Quote Post
wookieb
post 16.06.2009, 19:37:36
Post #9





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




1) funkcja obsłuży ci czas maksymalnie do 24h
2) Takie coś to sie liczy poprzez zwykła matematyke
  1. <?php
  2. $h=floor($czas/3600);
  3. $m=floor($czas/60);
  4. $s=$czas%60;
  5. ?>


--------------------
Go to the top of the page
+Quote Post
Pawel_W
post 16.06.2009, 19:41:21
Post #10





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

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


Cytat(wookieb @ 16.06.2009, 20:37:36 ) *
1) funkcja obsłuży ci czas maksymalnie do 24h
2) Takie coś to sie liczy poprzez zwykła matematyke
  1. <?php
  2. $h=floor($czas/3600);
  3. $m=floor($czas/60);
  4. $s=$czas%60;
  5. ?>


no troche to popsułeś bo np dla 3600 wyszłoby mu 1h 60 minut i 0s...

treba to zrobić tak:
  1. <?php
  2. $h=floor($czas/3600);
  3. $czas-=$h*3600;
  4. $m=floor($czas/60);
  5. $czas-=$m*60;
  6. $s=$czas;
  7. ?>
Go to the top of the page
+Quote Post
Wicepsik
post 16.06.2009, 19:43:31
Post #11





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


  1. <?php
  2. $_POST['predkosc'] = 3650;
  3.    function _Time($czas)
  4.    {
  5.            $minut = sprintf("%02d", floor($czas / 60) % 60);
  6.            $sekund = sprintf("%02d", floor($czas) % 60);
  7.            $godzin = sprintf("%02d", floor($czas / (60 * 60) % 24));
  8.  
  9.            return $godzin . ':' . $minut . ':' . $sekund;
  10.    }
  11.    
  12.    
  13.    echo _Time($_POST['predkosc']);
  14. ?>


--------------------
Go to the top of the page
+Quote Post
loofkens
post 16.06.2009, 21:11:21
Post #12





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.06.2009

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


Przepraszam panowie i panie że się jeszcze raz powtórze. Naprawde ze mnie jest amator w php. Umieszcze dokładnie o co mi chodzi.
CODE
<form method="post" action="">
Podaj prędkość jednostki(co jednocześnie jest ilością przebytych pól w ciągu 1 godziny)<br />
Prędkość<input type="text" name="predkosc" maxlength="2" size="1"/><br />
<input type="submit" value="Oblicz" />
</form>
<?php
$wynik = (round(3600/$_POST['predkosc']));
$a = date("H:i:s",$wynik);
echo 'Twoja prędkość to '.$_POST['predkosc'];
echo '<br>Przebycie 1 pola zajmuje '.$a;
?>

Jak dla mnie czyli nawet nie przedszkolaka podany skrypt jest prosty.
1. Podaje zmienną
2. zaokrąglam(sekundy dziele przez zmienną)
3. format wyświetlenia (pozwólcie że to tak nazwe)
4. wypisanie wyniku
Niby proste a jednak nie u mnie wyskakuje zawsze źle.
Rozumiem że zapis skryptu może budzić zastrzeżenia ale jak na laika to i tak całkiem nieźle.
Co to bedzie jak wynik tego skryptu bede chciał wstawić do nastepnego sad.gif ale to może innym razem.
Go to the top of the page
+Quote Post
ArekJ
post 16.06.2009, 22:33:49
Post #13





Grupa: Zarejestrowani
Postów: 266
Pomógł: 9
Dołączył: 21.05.2008
Skąd: Łomianki

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


  1. <?php
  2. $predkosc = $_POST['predkosc'];
  3. $godziny = floor(3600/$predkosc);
  4. $minuty = floor((3600/$predkosc)/60);
  5. $sekundy = floor(((3600/$predkosc)/60)/60);
  6. ?>

Może tak? Chociaż nie wiem czy coś nie pomieszałem - za dużo jakoś dzielenia mi wyszło. Sorki zmęczony jestem.

EDIT: zamieniłem funkcję round() na floor()

Ten post edytował ArekJ 16.06.2009, 22:35:38


--------------------

"Do bramy, bo pada deszcz
Gdy zaćpiesz przejdzie dreszcz
I wróci, wróci tęcza barw
I pęknie twój wrogi świat" R. Riedel
Go to the top of the page
+Quote Post
slewin
post 16.06.2009, 22:50:10
Post #14





Grupa: Zarejestrowani
Postów: 104
Pomógł: 7
Dołączył: 9.12.2008
Skąd: wroc

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


skoro masz pole forma ograniczone do 2 miejsc to podawaj to w sekundach lub tylko minutach .Max czas przebycia jednego pola to 3600/99=36sekund lub 0,6 minuty ! dodaj jeszcze funkcje aby nie dzieliło przez zero oraz liczby mniejsze od zera .
Kod
$wynik_sek = (round(3600/$_POST['predkosc']));
$wynik_min = $wynik_sek/60;
echo 'Twoja prędkość to '.$_POST['predkosc'];
echo '<br>Przebycie 1 pola zajmuje '.$wynik_sek.' sekund';
echo '<p> lub '.$wynik_min.' minut </p>';


Ten post edytował slewin 16.06.2009, 22:50:48
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 7.07.2025 - 14:13