Obliczanie czasu pracy na podstawie wprowadzenia godzin

0

Witam,

Chciałbym napisać program do obliczania czasu pracy na podstawie wprowadzenia godziny rozpoczęcia pracy i zakończenia. Starałem się szukać rozwiązania na forach i różnych stronach, ale chyba źle tworzę zapytanie. Czy jest w stanie mi ktoś z tym pomóc. Jedyne co znalazłem to klasa Duration, ale nie jestem pewny czy rozwiązuje ona mój problem.

W konsolę chciałbym wpisać np:
Czas rozpoczęcia pracy : 8:00 lub 8,00
Czas zakończenia pracy : 16:17 lub 16,17

i chodzi mi o liczenie nadgodzin, tak aby dodało mi te 17 minut do salda nadgodzin.

Ogólnie program chcę napisać do przećwiczenia baz danych, a przy okazji będę mógł z niego korzystać w praktyce.

Z góry dziękuję za każdą pomoc i sugestie.

1
jacob8 napisał(a):

Starałem się szukać rozwiązania na forach i różnych stronach, ale chyba źle tworzę zapytanie.

Pytasz o wszystko, więc o nic.

Pakiet java.time, w tym Duration to dobry pomysł, ale przy ogromnej szerokości twojego pytania dalece nie wystarczający, a o bazie danych to nawet jaskółki nie ćwierkają. Jak zrobisz z pierwszym etapie program konsolowy, który przyjmie, doda N rekordów (par) i wydrukuje wynik, to wystarczy.

Sądzę, że nie napalaj się jak szczerbaty na suchary na pełny, użyteczny program z baza danych - głęboko poćwicz elementy. Niestety, proces nauki np. na tokarza, to wiele surowca zmarnowane, tylko na odpad, programowania tak samo.

0
ZrobieDobrze napisał(a):
jacob8 napisał(a):

Starałem się szukać rozwiązania na forach i różnych stronach, ale chyba źle tworzę zapytanie.

Pytasz o wszystko, więc o nic.

Pakiet java.time , w tym Duration to dobry pomysł, ale przy ogromnej szerokości twojego pytania dalece nie wystarczający, a o bazie danych to nawet jaskólki nie ćwierkają
Jak zrobisz z pierwszym etapie program konsolowy, który przyjmie, doda N rekordów (par) i wydrukuje wynik, to wystarczy.

Sądzę, że nie napalaj się jak szczerbaty na suchary na pełny, użyteczny program z baza danych - głęboko poćwicz elementy. Niestey, proces nauki np na tokarza, to wiele surowca zmarnowane, tylko na odpad, programowania tak samo.

O bazie danych to napisałem tak dodatkowo. Chcę wyniki przechowywać w bazie, żeby po ponownym odpaleniu programu suma nadgodzin była zapisana. W tym pości chodzi mi tylko o to jak obliczyć różnicę minut między wprowadzonymi godzinami i wszystko co powyżej 8h pracy zapisać i iterować w zmiennej.

0

Zapisuj to co wprowadzasz jako LocalDateTime a następnie przeczytaj to https://www.baeldung.com/java-date-difference punkt 2.2
Przykład jest dla sekund ale jak pomyślisz to łatwo zrobisz analogicznie dla minut/godzin :)

0

Okej i to już jest cenna informacja. Tylko ten przykład co kolega wyżej podał z LocalDataTime to nie za bardzo wiem jak użyć na moim przykładzie. Zamiana Sekund na minuty to nie ma problemu, ale jak podstawić wprowadzone dane w formie "08:00"? — jacob8 51 sekund temu

Napisać własną klasę i w niej toString()
Podstawy programowania obiektowego.

Bo chyba nie będziesz tego całego g... obliczał w main()

0

Czy jest mi ktoś w stanie napisać jakiś przykład jak to zrobić? Byłbym bardzo wdzięczny ;)

1

Nie. Nikt Ci nie da gotowca.

Ale mogę Ci dać pryzkładowy link https://attacomsian.com/blog/java-convert-string-to-localdatetime (lub dowolny inny ze stacka, ale patrz na date bliżje 2022 niż 2016)
Wprowadzasz jako string w odpowiedniej postaci, a potem parsujesz to na LocalDateTime

0
jacob8 napisał(a):

Czy jest mi ktoś w stanie napisać jakiś przykład jak to zrobić? Byłbym bardzo wdzięczny ;)

Od "zrobię prawie program RCP" do "zróbcie to za mnie" ... ciekawa migracja ...

Zacznijmy: umiesz napisać własną klasę?
a) tak -> to masz piękną okazję (o ile nie opierasz sie na fabrycznej)
b) nie -> to nie ten etap.

0

Tak umiem. I nie chodzi mi o to żeby ktoś mi to wszystko napisał tylko o sam sposób na operacje z użyciem godzin i minut.

Chciałem napisać taki (wydawało mi się prosty) program, żeby przećwiczyć to co się nauczyłem z baz danych + przećwiczyć programowanie obiektowe(takie rzeczy jak dodawanie pracownika i potem wybieranie dla którego obliczać nadgodziny, jakieś statystyki tygodniowe itd) I z tym nie mam problemu tylko napotkałem problem w postaci operacji na godzinach i tylko o ten fragment mi chodzi. Chciałem jakiś jeden działający przykład bo co próbuje podstawić pod te przykłady co mi podrzucił inny użytkownik to nie działa to tak jakbym chciał.

2

Nie pokazałeś żadnego kodu, czyli nawet jeszcze nie zacząłeś tego robić a już widzisz problemy. To niedobrze. Jak chcesz się czegoś nauczyć to mam poradę: nie zaczynaj od komplikowania sobie życia.

W Javie obsługa czasu jest upierdliwa, ale robisz z igły widły. Jeżeli chcesz to faktycznie zrobić z użyciem tylko godziny i minuty to zrób sobie klasę z dwoma polami i metody do dodawania i odejmowania. Podpowiedź: 1 godzina ma 60 minut...

Jak już to ogarniesz - dodaj obsługę daty. Poza samą obsługą pracy zmianowej, o której jeden z Kolegów pisał wyżej zabezpieczy to w jakimś stopniu aplikację przed problemami, które pojawią się kiedy ktoś wprowadzi błędne dane, jakiś czytnik identyfikatorów się zepsuje i nie będzie można zarejestrować wyjścia pracownika itp.

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