![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 6.05.2003 Skąd: Kołobrzeg Ostrzeżenie: (0%) ![]() ![]() |
Witam po raz n-ty w programie "pytanie do experta"
W dzisiejszym odcinku spróbujemy znaleźć rozwiązanie na następujący problem: Mam tabele a w niej jedna z kolumn o nazwie "godzina_odjazdu" owe godziny przypożądkowane są do poszczegolnych przystankow na trasie przejazdu. I teraz powstaje pytanie czy wyciagajac dane godziny na strone mozna w php zrobic pętlę ktora dana trase przeliczala by zmieniajac godziny odjazdu o 22 godziny.Chodzi o to ze dany kurs wyjezdza w trase co 22 godziny, tzn. jezeli dzis wyrusza o godz. 18.00 z pierwszego przystanku, na drugim jest powiedzmy o 19.00 to nastepny kurs zostanie automatycznie przeliczony i odbedzie sie za 22godz. czyli o godz. 16.00 z pierwszego przystanku oraz 17.00 -drugi przystanek itd. Potrzebuje zrobic cos takiego zeby skrypt automatycznie przeliczal mi rozklad jazdy na np. kolejny miesiac. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 2.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Odpowiedź wydaje się banalna. Jeśli ma tylko wyświetlić nowe godziny dla następnego kursu, to jest to dodawanie modulo 24:
[php:1:6159ae4dc2]<?php $nowa_godzina = ( $godzina + 22 ) % 24 ?>[/php:1:6159ae4dc2] Takie działanie dla godziny 17 zwróci 15. Czyli jak teraz autobus jest na przystanku o godzinie 17, to następna godzina o jakiej będzie to 15. Takie coś oblicza to działanie, ale nie wiem, czy nie chodzi Ci o coś więcej. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 6.05.2003 Skąd: Kołobrzeg Ostrzeżenie: (0%) ![]() ![]() |
No to juz połowa sukcesu, teraz tylko potrzebuje zeby obliczalo mi to w petli na caly powiedzmy miesiac oraz wykluczajac godziny od 0.00 do 5.00 am czyli jeżeli godzina odjazdu dojdzie powiedzmy do godziny 4.00am to zeby przenosilo kurs dopiero na 0.00
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 85 Pomógł: 0 Dołączył: 2.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli rzeczywiście ma przenosić z 4am aż na 0am - czyli 24 (dziwię się bo to odstęp pomiędzy kursami 44 godzin w takim przypadku), to działanie wygląda tak:
[php:1:163900ef8a]<?php $nowa_godzina = $godzina > 5 ? ( $godzina + 22 ) % 24 : 24; ?>[/php:1:163900ef8a] (postawia 24, a nie 0, żeby później można było łatwo odejmować - po 24, będzie później 22, itd.) Jeśli odstęp czasowy ma być stale 22 godziny, to jak łatwo w tym wypadku zauważyć, godziny będą zmieniać się od 24, 22, 20... 10, 8, 6 i potem znowu: 24, 22, ... itd. Tak więc co 10 dni godziny będą się powtarzać. Można więc to podstawiać w pętli bez obliczania. Pętli coś na kształt takiej: [php:1:163900ef8a]<?php for ( $i = 24; $i > 5; $i--) { // to podstawienia kolejnych 10 dni } ?>[/php:1:163900ef8a] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 15:17 |