:)))
#15 lukas balaz ti napsal
var currentdate = new Date(); var imagenumber = Math.round(currentdate.getTime() / (1000*60*60*24))%9;
Coz, kdyz si vynasobis kalkuckou da 86400000 (tech 1000*60*60*24). Tak vysvetluji, jak na to prisel. Ze je to nasobeni milisekundy * sekundy * minuty * hodiny, pocet milisekund pro jeden den.
- par prispevku na to se tam objevuje jeste to nasobeni
- ondrej v #32 tam ma chybne 84000000
- v prispevku #40 jsi to spravil ty na 86400000
- ve #42 jsi to zmrvil uplne :) datum.getTime() /1000 * 60 * 60 * 24 * 86400000 - deleni ma prednost
Tak jen, abys mel takovou predstavu, co se deje...
- new Date().getTime() - je casove razitko, cislo pocet ms od roku 1970, silene velke cislo [A]
- toto cislo [A] podelis poctem milisekund pro jeden den [B] (coz je to nasobeni 1000*60*60*24) a dostanes prekvapive cislo dne. coz je 0 - 365.25 + vsechny dny od roku 1970
- kdyz toto cislo zaokrouhlis a pak podelis celociselne poctem obrazku, tak dostanes 0 az pocet obrazku
Cili, ta lukasova myslenka na zacatku je spravna a ten kod v prispevku #40 by ti mohl teoreticky fungovat.
+ 4 hodiny docilis jak? kdyz vis, ze 24h se pocita jako 1000*60*60*24 [B]
A = new Date().getTime();
B = 1000*60*60*24;
C = 1000*60*60*4;
D = obrazky.length;
A / B + C (bud plus nebo minus, kdyz to mas posunute o 4h)
(A / B + C) % D
% je modulo, zbytek po deleni na cela cisla, mozna znas ze zakladky z matiky
% = floor( ( x/y - floor(x/y) ) * y ) // x = 10, y = 7, zbytek po celociselnem deleni by mel vyjit 3
% = floor( ( 10/7 - floor(10/7) ) ) * 7 // floor orezava desetiny, cili z 123.456 udela 123.000
% = floor( (1.43 - 1) * 7 ) = floor( 0.43 * 7 = floor( 3.01 ) = 3
Cili, kdyz jakekoliv cislo vydelis pres modulo deleni, tak vysledkem bude 0 - D (pro priklad (A / B + C) % D)
http://www.jakpsatweb.cz/javascript/objekt-date.html
Ale tak v celku bys to mohl udelat i pomoci getDate(), mozna a getHour()
A = new Date().getDate();
D = obrazky.length;
alert([A, D, A/D, A%D]);
Jen pomoci milisekund ti to bude vybirat cele pole rovnomerne.
Co tim myslim? Rekneme, ze pocet obrazku je 10, unor ma 28 dni, brezen 31
getTime: unor 0-9, 0-9, 0-7, brezen 8-9, 0-9, 0-9...
getDate: unor 0-9, 0-9, 0-7, brezen 0-9, 0-9... // novy mesic bude zacinat nulou
Navic, je tu takova drobnost. JS bezi na pc uzivatele. Kdyz si zmenim cas v pc, tak i js jej bude mit zmenene.
A jeste je tu druha takova vec. Pokud je stranka otevrena, obrazek se sam nezmeni, dokud neni udelany refresh. musel by jsi obnovit stranku nebo pouzit casovac a kontrolovat treba po 5 min, jestli nenastala zmena casu.