Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] potrzebuje czas HH:ii zamienić na ilosc sekund., mam np 2:35 ile to sekund?
starterrrrr
post 14.10.2020, 15:16:00
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 7.01.2015

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


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?
Go to the top of the page
+Quote Post
trueblue
post 14.10.2020, 15:18:56
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Godzina to 60 minut, 60 minut, to 60 sekund, czyli godzina to 3600 sekund.
Ile sekund, to 2,5 godziny?


--------------------
Go to the top of the page
+Quote Post
dublinka
post 14.10.2020, 18:47:27
Post #3





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(starterrrrr @ 14.10.2020, 15:16:00 ) *
Witam.

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

Powiedz ze zartujesz


--------------------
Go to the top of the page
+Quote Post
starterrrrr
post 15.10.2020, 13:27:17
Post #4





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 7.01.2015

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


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]);


Ten post edytował starterrrrr 15.10.2020, 13:47:02
Go to the top of the page
+Quote Post
trueblue
post 15.10.2020, 13:51:49
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Ź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;


--------------------
Go to the top of the page
+Quote Post
starterrrrr
post 16.10.2020, 09:23:59
Post #6





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 7.01.2015

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


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?

Ten post edytował starterrrrr 16.10.2020, 09:27:23
Go to the top of the page
+Quote Post
trueblue
post 16.10.2020, 09:27:26
Post #7





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


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.


--------------------
Go to the top of the page
+Quote Post
viking
post 16.10.2020, 09:46:37
Post #8





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


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?


--------------------
Go to the top of the page
+Quote Post
starterrrrr
post 16.10.2020, 10:35:34
Post #9





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 7.01.2015

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


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ść.
Go to the top of the page
+Quote Post
viking
post 16.10.2020, 11:25:38
Post #10





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


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.


--------------------
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 Wersja Lo-Fi Aktualny czas: 23.04.2024 - 14:10