Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: Kun muuttuja on 10, se on vähemmän kuin 10?

Sharph [01.05.2006 12:59:33]

#

Minulla on seuraavanlainen funktio ajan muuntamiseen:

// Ajan muunnosfunktio muotoon hh:mm:ss
function muunna_aika($sek) {

  $tun=floor($sek/3600);
  $min=floor(($sek/3600-$tun)*60);
  $sec=($sek/60-floor($sek/60))*60;

  if($min<10) { $min = "0" . $min; }
  if($sec<10) { $sec = "0" . $sec; }

  return $tun . ":" . $min . ":" . $sec;

}

Kun sille annetaan parametriksi 40630, se palauttaa 11:17:010. Miten on mahdollista, että se lisää luvun 10 eteen nollan, kun tuossahan tarkistetaan että if($sec<10).

Antti Laaksonen [01.05.2006 13:14:12]

#

Minulla skripti muodostaa merkkijonon:
11:17:09.9999999999977

Tässä sekuntiluku on hieman kymmentä pienempi. Ilmeisesti kyseessä on siis pyöristysvirhe. En kyllä tiedä, miksi sinulla luku muuttuu kympiksi merkkijonon muodostuksessa.

Sharph [01.05.2006 13:28:03]

#

Korjattu. roundataan vaan $sec niin toimii.

Metabolix [01.05.2006 16:39:43]

#

Kovin mutkikkaasti erottelet noita. Jakojäännöksellä kävisi helpommin, ja jos yli vuorokauden mittaisia pätkiä ei tarvitse esittää tunneissa, niin hyvä idea voisi olla PHP:n date-funktio. Sillä saa aikaleimat sopivasti muotoiltua, ja niin kauan kuin ei vuosien mittakaavaan mennä, lopputulos lienee sama kuin tuolla tavalla laskemalla. Vuosissa sitten joutuu joka tapauksessa tekemään jonkinlaisen kompromissin karkausvuosia laskettaessa.

ajv [01.05.2006 17:04:09]

#

Vähän vastaavanlainen koodivinkki tullut joskus kirjoitettua:
https://www.ohjelmointiputka.net/koodivinkit/24503-php-sekunnit-selkokieleksi
Tosin tuokaan ei käytä jakojäännöstä aikojen laskemiseen, mikä sinänsä kyllä olisi varmasti järkevämpää.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta