Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Operacje na czasie w zmiennych
Helikon
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 22.08.2014

Ostrzeżenie: (0%)
-----


Witajcie!

Mam następujące zmienne:
$b['wejscie19'] oraz $b['wyjscie19'] i przybierają one wartość godzinową, czyli w formacie 00:00:00, 01:30:00 i tak dalej..
Chciałbym aby wynik następującego działania dawał nam postać według formatu godzinowego, a nie całkowitego:
$iloscsroda = $b['wyjscie19'] - $b['wejscie19'];
W tym momencie zmienna zwraca takie liczby całkowite - 1, 8, 16. Chciałbym jednak żeby zwracała 01:00, 08:00, 16:00 i brała też pod uwagę minuty - np. 16:30.

Czy ktoś może podpowiedzieć sposób jakim mogę wykonywać działania na czasie?

Pozdrawiam,
Helikon

Ten post edytował Helikon 10.01.2017, 20:20:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Przekonwertuj na sekundy np:

  1. $sec = strtotime('00:10:00') - strtotime('today');


Potem odejmij wartości a następnie wyświetl sobie np:

  1. echo date('h:i:s', $roznica);
Go to the top of the page
+Quote Post
Helikon
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 22.08.2014

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 10.01.2017, 20:42:38 ) *
Przekonwertuj na sekundy np:

  1. $sec = strtotime('00:10:00') - strtotime('today');


Potem odejmij wartości a następnie wyświetl sobie np:

  1. echo date('h:i:s', $roznica);


Napisałem coś takiego:

  1. $sec_wyjsciewtorek = strtotime($a['wyjscie18']);
  2. $sec_wejsciewtorek = strtotime($a['wejscie18']);
  3.  
  4. $sumawtorek = $sec_wyjsciewtorek - $sec_wejsciewtorek;
  5.  
  6. $iloscwtorek = date('H:i', $sumawtorek);


Lecz zwraca wynik o jedną godzinę większą - również dla wartości 00:00:00 zwraca 01:00 smile.gif

Może być to kwestia strefy czasowej? Jak ją tutaj zmienić?

Ten post edytował Helikon 10.01.2017, 20:49:12
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


  1. $date1 = DateTime::createFromFormat('H:i:s', '06:00:00');
  2. $date2 = DateTime::createFromFormat('H:i:s', '03:45:00');
  3. $x = $date1->diff($date2);
  4.  
  5. var_dump($x->format('%H:%I:%S'));


--------------------
Go to the top of the page
+Quote Post
Helikon
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 22.08.2014

Ostrzeżenie: (0%)
-----


Cytat(viking @ 10.01.2017, 20:52:16 ) *
  1. $date1 = DateTime::createFromFormat('H:i:s', '06:00:00');
  2. $date2 = DateTime::createFromFormat('H:i:s', '03:45:00');
  3. $x = $date1->diff($date2);
  4.  
  5. var_dump($x->format('%H:%I:%S'));


Tutaj czaję i działa, tylko może trochę banał - jak to wyświetlić w postaci samej godziny?

  1. echo var_dump($x->format('%H:%I:%S'));


Bo dając coś takiego zwraca string(8) "02:15:00".
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Really? echo $x->format('%H:%I:%S');


--------------------
Go to the top of the page
+Quote Post
krzywy5830
post
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 5
Dołączył: 14.10.2012

Ostrzeżenie: (0%)
-----


Cytat(Helikon @ 10.01.2017, 20:56:44 ) *
Tutaj czaję i działa, tylko może trochę banał - jak to wyświetlić w postaci samej godziny?

  1. echo var_dump($x->format('%H:%I:%S'));


Bo dając coś takiego zwraca string(8) "02:15:00".


http://php.net/manual/en/function.date.php

Jak chcesz tylko samą godzinę to będzie $x->format('H'), jeśli godzinę z minutami to $x->format('H:i'), a jeśli godzinę z minutami i sekundami to $x->format('H:i:s'), gdzie H - godziny, i - minuty, s - sekundy.
Go to the top of the page
+Quote Post

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 - 18:57