Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] potrzebuje czas HH:ii zamienić na ilosc sekund.
Forum PHP.pl > Forum > Przedszkole
starterrrrr
Witam.

Potrzebuje dodać dwie godziny trzydzieści minut do pewnej daty.

Pewną date zamieniam na timestamp strototime(DATA) i mam teraz 2:30 dodać do tej daty.

Jak zamienić więc 2:30 (dwie godziny trzydzieści) na sekundy?
trueblue
Godzina to 60 minut, 60 minut, to 60 sekund, czyli godzina to 3600 sekund.
Ile sekund, to 2,5 godziny?
dublinka
Cytat(starterrrrr @ 14.10.2020, 15:16:00 ) *
Witam.

Jak zamienić więc 2:30 (dwie godziny trzydzieści) na sekundy?

Powiedz ze zartujesz
starterrrrr
Cytat(trueblue @ 14.10.2020, 16:18:56 ) *
Godzina to 60 minut, 60 minut, to 60 sekund, czyli godzina to 3600 sekund.
Ile sekund, to 2,5 godziny?



Trzeba odpalić explode i rozbijać po dwukropku?
Czy jest do tego jakaś funkcja php? Niestety operacje na datach to moja słaba strona smile.gif


Zrobiłem to tak: Działą, ale nie jestem z tego zadowolony.
Operacje na datach leżą u mnie niestety, nie ma kiedy zabrać się porządnie za nauke tego.

  1. $DANE_minuta = 60;
  2. $DANE_godzina = 3600;
  3. $cfg['pojedynczy_przedzial'] = '2:30';
  4.  
  5. $przedzialCzasExplode = explode(":", $cfg['pojedynczy_przedzial']);
  6. $przedzialCzasSek = ($DANE_godzina*(int)$przedzialCzasExplode[0])+($DANE_minuta*$przedzialCzasExplode[1]);
trueblue
Źle ostatnia linia, powinno być:
  1. $przedzialCzasSek = ($DANE_godzina * $przedzialCzasExplode[0]) + ($DANE_minuta * $przedzialCzasExplode[1]);


Ostatnią linię możesz zmienić na:
  1. $przedzialCzasSek = $DANE_minuta * ($DANE_minuta * $przedzialCzasExplode[0] + $przedzialCzasExplode[1]);

i wyrzucić $DANE_godzina;

Albo tak:
  1. $przedzialCzasSek = $DANE_godzina * ($przedzialCzasExplode[0] + ($przedzialCzasExplode[1] / 60));

i wyrzucić $DANE_minuta;
starterrrrr
Cytat(trueblue @ 15.10.2020, 14:51:49 ) *
  1. $przedzialCzasSek = $DANE_godzina * ($przedzialCzasExplode[0] + ($przedzialCzasExplode[1] / 60));

i wyrzucić $DANE_minuta;


Żeby wykonać operacje matematyczną na zmiennej, albo na elemencie tablicy, nie musze najpierw zamienić na wartość integer albo float?

Czyli dobrze myślałem, że w php nie ma funkcji która zamienia godziny (H:i) na sekundy?
trueblue
https://www.php.net/manual/en/language.type...pe-juggling.php

P.S. W sumie kiedy tak bardzo chcesz przechowywać wartości z zmiennych, to powinno być * $DANE_minuta, a nie * 60. A swoją drogą zamiast zmiennych lepiej użyć tu stałych. A jeśli nie używasz tych zmiennych/stałych na potrzeby innych funkcji, to nie widzę w ogóle sensu ich używania.
viking
Cytat(starterrrrr @ 14.10.2020, 16:16:00 ) *
Potrzebuje dodać dwie godziny trzydzieści minut do pewnej daty.

W jakim formacie jest data wejściowa?
starterrrrr
Cytat(viking @ 16.10.2020, 10:46:37 ) *
W jakim formacie jest data wejściowa?



Operacje na reszcie daty wykonuje na timestampie.

Trochę bałagan się już zrobił, powoli zaczynam tracić orientacje, któa zmienna w jakim formacie przetrzymuje dane smile.gif do zmiennych na końcu bede chyba musiał dokładać informacje w jakim formacie dana wartość.
viking
Skoro timestamp na wejściu to możesz użyć np:
  1. $dt = new \DateTime("@1602835200", new \DateTimeZone('Europe/Warsaw'));
  2. $dt->add(new \DateInterval('PT2M30S'));
  3. echo $dt->format(\DateTime::ISO8601);


Możesz użyć biblioteki https://carbon.nesbot.com/docs/#api-addsub
Opcji jest wiele.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.