Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: javascript sekunneista päiviksi, tunneiksi...

javerkki [18.03.2009 21:35:50]

#

Hei !

Yritän saada konvertoitua x määrän sekunteja muotoon:

x paivaa x tuntia x minuuttia x sekuntia

Eli jos sekunteja olisi 100000, niin saataisiin tulokseksi:

 1 paivaa 3 tuntia 46 minuuttia 40 sekuntia

Mutta jos sekunteja olisi vaikkapa 80, niin silloin saataisiin tulokseksi

1 minuutti 20 sekuntia

Eli näytettäisiin vain minuutit ja sekunnit. Ei niin, että 0 paivaa 0 tuntia 1 minuutti 20 sekuntia.


Nyt lasken ajan näin:

var aika = 100000;
var paivat;
var tunnit;
var minuutit;
var sekunnit;

paivat = (aika / 86400);
tunnit = (aika / 3600) - (paivat * 24);
minuutit = (aika / 60) - ((paivat * 1440) - (tunnit *60));
sekunnit = (aika % 60);

Mutta nyt tulos on muotoa:

paivat: 1.1574074074074074
tunnit: 0
tunnit: 0
sekunnit: 40

Eli jumituin nyt tähän?

Voisiko joku neuvoa, että miten saisin tämän toimimaan kuvaamallani tavalla.

Antti Laaksonen [18.03.2009 21:38:22]

#

Jos sekunteja on 120, pitääkö näyttää "2 minuuttia 0 sekuntia" vai "2 minuuttia"?

Siis pitääkö näyttää kaikki ajanyksiköt ensimmäisestä ei-nollasta lähtien vai kaikki ei-nollat ajanyksiköt?

javerkki [18.03.2009 21:50:35]

#

Hei Antti.

Ehkä on selvemmän näköistä, että näytettäisiin ajanyksiköt ensimmäisestä ei-nollasta lähtien.

Eli 2 minuuttia 0 sekuntia

Antti Laaksonen [18.03.2009 22:05:49]

#

Tuossa on minun ehdotukseni:

function aika(sek) {
	suhteet = [86400, 3600, 60, 1]
	nimet1 = ["päivä", "tunti", "minuutti", "sekunti"]
	nimet2 = ["päivää", "tuntia", "minuuttia", "sekuntia"]
	alku = false;
	teksti = "";
	for (i = 0; i < 4; i++) {
		tulos = Math.floor(sek / suhteet[i]);
		sek = sek % suhteet[i];
		if (tulos != 0 || alku) {
			if (teksti != "") teksti += " ";
			teksti += tulos + " ";
			if (tulos == 1) {
				teksti += nimet1[i];
			} else {
				teksti += nimet2[i];
			}
			alku = true;
		}
	}
	if (teksti == "") teksti = "0 sekuntia";
	return teksti;
}

alert(aika(12345));

javerkki [18.03.2009 22:23:35]

#

Kiitos paljon antti. Tämähän toimii kuin unelma!

Vastaus

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

Tietoa sivustosta