Java, aplikacja do odliczania czasu

Axerr | 2021-02-17 10:25:18 UTC | #1

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 | 2020-10-06 12:08:32 UTC | #2

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

[quote=”Axerr, post:1, topic:16018”]
jak program miałby wybierać najbliższą godzinę
[/quote]

?
Dzięki :wink:


Kamil02167 | 2020-10-06 13:47:02 UTC | #3

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


anon26799942 | 2020-10-06 16:52:40 UTC | #4

Aha, zajarzyłem :wink:

Taki mam pomysł :)


Axerr | 2020-10-07 11:12:59 UTC | #5

[quote=”Kamil02167, post:3, topic:16018”]
nieaktualne po tylu dniach
[/quote]
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 :frowning:


anon26799942 | 2020-10-08 14:36:40 UTC | #6

[quote=”Axerr, post:5, topic:16018”]
Czyli usunąć dwukropki z godzin, wywalić z listy liczby mniejsze niż obecna bez dwukropka i wziąć pierwszą liczbę z tej listy, tak?
[/quote]
Dokładnie :wink:

[quote=”Axerr, post:5, topic:16018”]
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 :frowning:
[/quote]

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ą :wink: Tak przy okazji rozwiążesz problem, gdy nie ma już eventów w danym dniu :cryingcatface:

Pozdrawiam :wink:


xSeKaBo | 2020-10-09 17:30:00 UTC | #7

Po co kombinować jak można sortować?
http://www.java2s.com/Tutorials/Java/DataStructureHowto/Sort/Sortalistoftimestrings.htm


Axerr | 2020-10-08 05:53:30 UTC | #8

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 | 2020-10-09 17:31:16 UTC | #9

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


system | 2021-02-17 10:31:43 UTC | #10

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