Wyjaśnienie działania programu z rozkładem jazdy

2015-01-25 15:51
0

Witam ponownie :)

Tym razem nie mam problemu z działaniem programu, ponieważ działa tak jak powinien, a ja nie mam pojęcia czemu :)

if (wybor < teraz.TimeOfDay)
{
    konwertowanie1 = Convert.ToDateTime(rozkladjazdy.Items[0]);
    roznicaczasow = (new TimeSpan(23, 59, 59) - teraz.TimeOfDay) + konwertowanie1.TimeOfDay;
    najodjazdlabel.Text = roznicaczasow.ToString(@"hh\:mm\:ss");
}

Program to rozkład jazdy autobusu prywatnej linii który piszę dla siebie. Tutaj mam fragment kodu który ma powodować, że jeśli godzina z wybor (TimePicker) będzie mniejsza od teraźniejszej godziny systemowej teraz.TimeOfDay to do zmiennej roznicaczasow ma wsadzać czas do odjazdu najbliższego autobusu, ale z następnego dnia. Dane do najbliższego odjazdu pobiera z pierwszej pozycji listboxa rozkladjazdy, w którym zawsze na 1 pozycji znajduje się najbliższy autobus.

Jeśli wybiorę wcześniejszą godzinę, ale taką, że najbliższy odjazd nadal będzie ten sam co przy wyborze czasu systemowego (a więc 1 pozycja listboxu się nie zmieni) to program liczy mi czas do odjazdu ale tego samego dnia. Natomiast dopiero jeśli wybiorę na tyle wcześniejszy czas, żeby najbliższy odjazd w listboxie zmienił się na wcześniejszy autobus, program poprawnie liczy odjazd od teraz do tego autobusu następnego dnia.

Działa więc to logicznie bo jeśli wybieram wcześniejszą godzinę odjazdu niż godzina systemowa ale najbliższy autobus jest później niż ta godzina (czyli jeszcze zdążę) to liczy mi czas do odjazdu tego samego dnia. Jeśli wybiorę na tyle wcześniejszy czas, że pokaże mi już poprzedni autobus to liczy mi czas do jego odjazdu ale następnego dnia - problem w tym, że kompletnie nie widzę tego w kodzie...

Nie chce robić tego na pałę bo piszę ten program żeby się czegoś nauczyć, więc chce zrozumieć czemu to tak działa.

Pozostało 580 znaków

2015-01-25 16:26

Ponieważ dajesz ToString(@"hh\:mm\:ss") Nie wyświetlasz dni.

Pozostało 580 znaków

2015-01-25 17:24
0

... głupi błąd

Pozostało 580 znaków

2015-01-25 18:04
1

I tak w ogóle to zamiast

new TimeSpan(23, 59, 59)

możesz dać

new TimeSpan(1,0,0,0)

Powinieneś też nazywać te zmienne tak, aby mówiły czym są czyli coś w stylu najbliższyAutobus zamiast konwertowanie1

edytowany 1x, ostatnio: dam1an, 2015-01-25 18:04

Pozostało 580 znaków

2015-01-25 20:22
0

Taak, wiem, dzięki ;)

Często tak mam, że piszę kod chaotycznie byle tylko szybciej sprawdzić czy działa a jak wracam do niego następnego dnia to muszę poświęcić pół godziny żeby się w nim połapać i znowu zacząć pisać :)

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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