Java, aplikacja do odliczania czasu

Pytania i problemy
Axerr
Axerr

Cześć,

Aktualnie piszę aplikację w Javie, która ma za zadanie odliczać czas do najbliższej ustawionej godziny w pliku. Niestety nie mam za bardzo pomysłu jak program miałby wybierać najbliższą godzinę.

Przyklad:

events:
    aaa:
        - "14:10"
        - "14:20"
        - "14:30"
        - "17:10"
    bbb:
        - "06:59"
        - "11:10"
        - "15:33"
Aktualnie jest godzina 14:25:11
Wydarzenie aaa: pozostało: 0godz 4min 49sek
Wydarzenie bbb: pozostało: 1godz 8min 0sek

Macie jakieś pomysły jak można wykonać taki licznik? Z góry dziękuję :)

anon26799942
anon26799942

Witaj 🖐️ Czy mógłyś sprecyzować, co masz na myśli pisząć:

Axerr:

jak program miałby wybierać najbliższą godzinę

? Dzięki 😉

Kamil02167
Kamil02167

Zapewne najbliższa od aktualnej, choć już pewnie nieaktualne po tylu dniach :thinking:

anon26799942
anon26799942

Aha, zajarzyłem 😉

  • Możesz getować wszystkie wartości z configu, usuwać dwukropki, następnie wybierać wartości większe od aktualnej godziny (w sensie, że np. możesz mieć ustawioną np. 00:00 a jest 13:56, więc odrzucamy :kosz:).

  • Następnie wybierasz najmniejszą liczbę z tych "bezdwukropkowych" godzin

  • Wyjdzie Ci liczba, która jest godziną leżącą najbliżej na osi czasu 😉

  • Aby zgetować godzinę z dwukropkiem, możesz od końca (lub początku 🙂) wstawić go "na siłę". IMO lepszym sposobem byłoby coś jak poniżej:

    loopConfigu -> if ([godzina bez dwukropka] == najwiekszaLiczba) -> return najwiekszaLiczba

Taki mam pomysł :)

Axerr
Axerr

Kamil02167:

nieaktualne po tylu dniach O dziwo nadal aktuale po tylu dniach :slight_smile:

Czyli usunąć dwukropki z godzin, wywalić z listy liczby mniejsze niż obecna bez dwukropka i wziąć pierwszą liczbę z tej listy, tak? A co w wypadku godziny po północy? Przykładowo teraz jest 23:58 a następna godzina to 00:04. 0004 jest mniejsze niż 2358 więc zostanie usunięte 😦

anon26799942
anon26799942

Axerr:

Czyli usunąć dwukropki z godzin, wywalić z listy liczby mniejsze niż obecna bez dwukropka i wziąć pierwszą liczbę z tej listy, tak? Dokładnie 😉

Axerr:

A co w wypadku godziny po północy? Przykładowo teraz jest 23:58 a następna godzina to 00:04. 0004 jest mniejsze niż 2358 więc zostanie usunięte 😦

Możesz przy getowaniu wartości z configu sprawdzać, czy zaczyna się od 00:, jeżeli tak to zamieniasz to na 24: i usuwasz dwukropek :D

Lepszą opcję jest zatem sprawdzanie, czy po poodrzucaniu wszystkich liczb nic nie zostało - jeżeli tak, to ustawiasz liczby od najmniejszej i bierzesz najmniejszą 😉 Tak przy okazji rozwiążesz problem, gdy nie ma już eventów w danym dniu 😿

Pozdrawiam 😉

Axerr
Axerr

Tak właściwie to obydwie metody nie są najlepsze, bo obydwie sprowadzają się do porównywania całej listy godzin. Dzięki Wam za pomoc :slight_smile:

Axerr
Axerr

Ostatecznie przetestowałem obie metody i metoda, którą przedstawił @xSeKaBo wydaje się "lepsza", ale nadal nie najlepsza. Dziękuję wszystkim za pomoc :)

system
system

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.