Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Operacje matematyczne na czasie trwania (nie chodzi o obliczanie daty)
icamtuff
post
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:

  1. Hours: <input type="text" name="eta_h" value="0" /><br />
  2. Minutes: <input type="text" name="eta_m" value="0"/><br />
  3. Seconds: <input type="text" name="eta_s" value="0" /><br /><hr />


Następnie wybiera wartość procentową o ile ma być ten czas skrócony:
  1. <input type="radio" name="bType" value="0.25"checked> 25%<br>
  2. <input type="radio" name="bType" value="0.5"> 50%<br>


Zbieram dane (na razie GETem) i wymodziłem coś takiego korzystając z jednego z przykładów znalezionego gdzieś w czeluściach Internetu:
  1. $strStart = '2001-01-01 00:00';
  2. $strEnd = '2001-01-01 '.$_GET['eta_h'].":".$_GET['eta_m'].":".$_GET['eta_s'];
  3.  
  4. $dteStart = new DateTime($strStart);
  5. $dteEnd = new DateTime($strEnd);
  6. $dteDiff = $dteStart->diff($dteEnd);


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:

  1. $boostType = $_GET['bType'];
  2.  
  3. $timePOSIX = strtotime($format);
  4.  
  5. $a = $timePOSIX;
  6. $b = $boostType;
  7. echo "<br/>";
  8. echo date("H:i:s",$a-$a*$b);


Wypluwa mi:
  1. 00:20:00
  2.  
  3. 06:15:00


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 smile.gif

Ten post edytował icamtuff 14.06.2017, 11:24:53
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:25