Obliczanie czasu przy pomocy instrukcji warunkowych

Odpowiedz Nowy wątek
2011-07-09 19:24
0

Witam.

Mam pewien problem. W php nie jestem już raczej początkującym, z prostymi skryptami sobie radzę bez problemów. Ten też tak wyglądał, jednak pomyliłem się.

Opiszę swój problem od początku:

W bazie danych, mam zapisany czas, jednak w int i jako liczba, bo nie potrzebuję podziału na godziny i minuty.

Próbuję policzyć procent tej godziny, i wyświetlić to w formacie czasu, czyli na przykład 1:30 zamiast 1.5 (1h 30 minut zamiast 1 całość i 5 dziesiątych).

W tym celu zamieniłem czas z bazy danych mysql (zapisany w godzinach) na minuty:

$czasminuty = $czasgodziny * 60;

następnie, wyliczyłem procent z tych minut :

$czasprocent = $czasminuty * 0.40; //podany przykładowy procent 

potem próbowałem, z tej wyliczonej ilości minut, wyciągnąć całości, czyli godziny za pomocą instrukcji warunkowych :

for ($godziny = 0; $czasprocent <= 60; $godziny ++){
 
        $czasproc = $czasprocent - 60;
        echo $godziny;
        echo ":";
        echo $czasproc;
 
        } 

oraz tak

if ($czasprocent > 60){
        $godziny++;
        $czasproc = $czasprocent - 60;
        echo $godziny;
        echo ":";
        echo $czasproc;
        $godziny = 0;
        }
 

no i jeszcze tak

 
do {
            if ($czasprocent >= 60){
                $j++;
                $czasminus = $czasprocent - 60;
        echo $godziny;
        echo ":";
        echo $czasminus;
            }
        }
        while ($czasprocent >=60);

Być może, wyda się to dla was śmieszne, ale żaden sposób nie działa.

Problem może być błahy i wyjdę na idiotę... no ale cóż, sam chyba nie dam rady.

Nigdy wcześniej nie robiłem takiego skryptu i nie wiem jak go porządnie wykonać.

Serdecznie proszę o pomoc.

Pozostało 580 znaków

2011-07-09 21:43
0

Nie lepiej skorzystać z unix timestampa i mieć cały zestaw funkcji (mktime, date, etc) do pracy na nim? Też dostajesz int.


Women were the reason I became a monk - and, ah, the reason I switched back...

Pozostało 580 znaków

2011-07-09 21:52
cholera wie

Coś w rodzaju:

$godzinaFloat = 23.25;
$godzinaInt = (int)$godzinaFloat;
$minuty = 60 * ($godzinaFloat - $godzinaInt) 
$czas = sprintf("%d:%02d", $godzinaInt, $minuty);
echo $czas; // czy co tam chcesz z tym robić

Pozostało 580 znaków

2011-07-09 22:18
0

Może i lepiej. Ale nie pomyślałem wcześniej i teraz musiałbym modyfikować kilkaset rekordów w bazie.
Raczej tak nie zrobię...

#Cholera wie

Świetnie, o to mi chodziło. Bardzo dziękuję :)

edytowany 2x, ostatnio: krzysiek2541, 2011-07-09 22:23

Pozostało 580 znaków

2011-07-09 22:27
0

dwa pierwsze sposoby nie działały bo wprowadziłeś zmienną "czasproc" obok "czasprocent", z której błędnie korzystasz - gdybyś zamienił wszystkie "czasproc" na "czasprocent" w pierwszym sposobie to by działało (no i jeszcze powinieneś wypisywać wynik po końcu pętli)
drugi sposób też by działał po zamianie ale poprawnie tylko do dwóch godzin
a trzeci sposób po prostu nie ma sensu


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<
edytowany 2x, ostatnio: unikalna_nazwa, 2011-07-09 22:30

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0