![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 14.06.2017 Ostrzeżenie: (0%) ![]() ![]() |
Będąc marnej jakości początkującym programistą natknąłem na problem obliczania czasu i operacji matematycznych na nim. Mam na myśli podanie czasu trwania (wstępnie do 24h max) i skrócenie tego czasu o pół, o 10%, o 25% itd. itp.
Wymodziłem sobie taki prosty formularz gdzie użytkownik podaje trzy elementy czasu czyli godziny, minuty i sekundy: Następnie wybiera wartość procentową o ile ma być ten czas skrócony: Zbieram dane (na razie GETem) i wymodziłem coś takiego korzystając z jednego z przykładów znalezionego gdzieś w czeluściach Internetu:
Teraz mam problem dalej bo np. gdy chciałbym skrócić ten czas o 10% lub 1/3 to wszystko działa bardzo fajnie jeśli podam czas/datę jakąś dużą czyli 16 godzin bo jeśli chcę przyciąć czas dwudziestu minut o np 25% to widzę, że jest to traktowane jako godzina 0:20 (dwadzieścia po północy), a nie po prostu dwadzieścia minut:
Wypluwa mi:
zamiast 15 minut. Czy ktoś może mi wyłożyć i wbić do łba co robię źle w moim procesie myślowym, jak ten problem ugryźć i przede wszystkim rozwiązać? Bo coś mi się wydaje, że źle biorę się za rozwiązanie problemu. Prosiłbym też o łopatologiczne wyjaśnienie i pomoc. Z góry dziękuję za pomoc ![]() Ten post edytował icamtuff 14.06.2017, 11:24:53 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Co to znaczy, że skracasz czas? Skracasz sekundy, minuty czy godziny odrębnie, czy może skracając minuty oczekujesz skrócenia również godzin (traktujesz godzinę jako 60 minut)?
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 14.06.2017 Ostrzeżenie: (0%) ![]() ![]() |
Co to znaczy, że skracasz czas? Skracasz sekundy, minuty czy godziny odrębnie, czy może skracając minuty oczekujesz skrócenia również godzin (traktujesz godzinę jako 60 minut)? To znaczy, że jak mam 2h 43m 33s i skracam o 25% to chcę uzyskać:
(dziękuję za odpowiedź) |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
No i odpowiedziałeś sobie sam na swój problem.
Musisz mieć 2 funkcjie: - konwertującą do sekund (https://stackoverflow.com/questions/4834202/convert-time-in-hhmmss-format-to-seconds-only) - konwertującą do godzin (https://stackoverflow.com/a/20870843/3732803) Zamieniasz na sekundy, wyliczasz, konwertujesz, wyświetlasz. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 14.06.2017 Ostrzeżenie: (0%) ![]() ![]() |
No i odpowiedziałeś sobie sam na swój problem. Musisz mieć 2 funkcjie: - konwertującą do sekund (https://stackoverflow.com/questions/4834202/convert-time-in-hhmmss-format-to-seconds-only) - konwertującą do godzin (https://stackoverflow.com/a/20870843/3732803) Zamieniasz na sekundy, wyliczasz, konwertujesz, wyświetlasz. Ok, spróbuję ale czy to czasem znowu mi nie wypluje jakiejś godziny szóstej rano gdy podam 20 minut? EDIT: chyba wiem w czym problem miałem - trzeba przyjąć jako "bazę" początkowy start POSIXowy czyli pierwszy stycznia '70 s strefie UTC. Dlatego strtotime() wyrzucał mi jakieś dziwne wyniki bo to było interpretowane jako rok 2017, a 25% z 47 lat (od 70 do 17) to 12 lat... :/ Ten post edytował icamtuff 14.06.2017, 11:32:00 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 14.06.2017 Ostrzeżenie: (0%) ![]() ![]() |
Teraz zobaczyłem jaką głupotę robiłem - pominąłem argument północy i dlatego mi wyrzucał daty wsteczne. Dziękuję za pomoc Wam obu! ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Tak tylko tym sposobem nie zrobisz więcej niż 24h
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.07.2025 - 06:11 |