Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zamiana sekund na minuty.
Forum PHP.pl > Forum > Przedszkole
Giluś
Cześć, chciałbym się zapytać jaka funkcja z manuala zamieni mi np.: 120sekund na 2:00,000 lub np.: 60sekund na 1:00,000 i przykładowo 1sekunda: 0:01,000.

Czym takie coś zrobić ?
peter13135
znakiem dzielenia "/"
ewentualnie date i mktime
Giluś
dobrze ale jak dam:
60/60 = 1, a ja chce żeby było 1:00,000 i ewentualnie 130/60 = 2,166666666666667 to żeby mi zamieniło na: 2:16,667 ( bo przybliżenie )
erix
number_format + str_pad.
Giluś
Po dłuższym zastanowieniu nie wiem jak to zrobić...
  1. $liczba = 1919.919;
  2. $sss = number_format($liczba, 2, ',', ':');
  3. echo "".$sss."";

Wyświetla się dobrze: 1:919,92
Ale jak chce swój czas:
  1. $liczba1 = 130; // Ilość sekund
  2. $liczba2 = 60;
  3. $wynik = $liczba1 / $liczba2; // Wychodzi 2.16666666667.

I jak teraz wstawię $wynik zamiast $liczba to wychodzi czas: 2,17 a powinno być 2:16:667 (mm:ss:ms).

Macie jakieś pomysły ?

sadistic_son
A jesteś pewien, że 130 sekund to 2 minuty i 17 (czy tam 16) sekund? Kolego - nie możesz traktować sekund jako liczb dziesiętnych bo minuta to nie 100 sekund. Musisz zastosować dzielenie z resztą i to co zostanie, ta reszta to właśnie sekundy. Czyli 130 sekund to 2 minuty i 10 sekund. Te 10 sekund to wynik dzielenia z resztą (operator %).
Giluś
No własnie również się zastanawiałem czemu mi wychodzi 2minuty i 17sekund wink.gif
Troszkę zmodyfikowałem kod:

  1. $sekundy = 130;
  2. $minuty = floor ($sekundy / 60);
  3. $sekundys = $sekundy % 60;
  4. echo "$sekundy sekund to : $minuty:$sekundys";

I wychodzi teraz: 130 sekund to : 2:10, czyli mniej więcej poprawnie do zamierzonego mojego celu, teraz tylko setne sekundy, jak je obliczyć mając np.: 130,233223sekund ?
Fifi209
Przy 130 sekundach ciężko o części setne sekundy. ;]
Giluś
Ale poczytaj troszkę bardziej wink.gif
130 - Wyliczę tylko Minutę i Sekundę (nawet i przy 999), ale jak dodam 130.343 to teraz już obliczę zrobiłem tak:
  1. $sekundyp = explode(".", $sekundy);
  2. echo "".$sekundyp[1]."";

I teraz wyświetlają mi się cyfry po . (kropce) i teraz moje pytanie bo nie wiem za bardzo czy to już jest wynik w ms czy trzeba podzielić przez tysiąc
1sekunda = 0.001
Fifi209
Skoro po kropce pokazujesz w ms to chyba nic się nie zmienia, czyż nie?
Giluś
No dobrze, ale mam pytanie jeszcze takie:
Jak zaokrąglić liczbę do większej lub mniejszej, liczbę 103.16666667, po kropce oddzielam:
  1. $sekundyp = explode(".", $sekundy);

i wyświetla mi się: 16666667 przez kod:
  1. $sekundyp[1]

I teraz moje pytanie jak zaokrąglić taką liczbę: 16666667 do większej lub mniejszej, stosowałem: round i floor ale to tylko działa jak jest np.: 103.3 to zaokrągli do 103.0.

Wiec czym się posłużyć ?
erix
round - zobacz, że ta funkcja ma drugi parametr.
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.