03. december 2010 - 21:33Der er
38 kommentarer og 1 løsning
Time beregner problemer
Hej exp.
Jeg sidder og prøver at lave en lille time beregner.
Men er kørt lidt fast, i hvordan jeg bedst muligt kan få beregneren, til at kigge efter om følgende ting.
Alm. 5 point pr./time.
Man -til Fredag fra kl 18:00 - 00:00 5 point mere pr./time. Lørdag - hele dagen giver 10 point mere pr./time. Søndag - hele dagen giver 20 point mere pr./time.
Der hvor min kæde hopper af, er når den skal udregnes. Se mit eksempel her: En logger på kl 07.00 - 19.00. Der skal han/hun have 30 point + 5 point = 35 point.
Har lidt svært ved at se hvordan man skal finde frem til at den sidste time og er med ekstra point?
Håber det giver lidt mening, ellers spørger i bare.
Hvis du ved at det er hele timer saa lave en for loekke som itererer over antal hele timer og opsummerer med et funktionskald der returnerer point for et givet tidspunkt.
OK, Arne - lav dit eksempel om til at operere med parametre i unix-time, så er det formentlig ok - spørgeren ønskede ikke bare fra hh:mm - hh:mm, men fra mandag-fredag og andre fra lørdag til søndag. Og den løsning, jeg har været i gang med involverer, at man først aligner unic-time til en mandag (0) kl 00:00:00 og så først nulstil unix time til at være en mandag kl 00:00 (ved at addere 4 gange en dag + en time (så er unix-time mandag kl 00:00) Og brug så % (modulus til at finde ud af hvor du er) ... need i say more...
Det, jeg mener, Arne, er at man siger at mandag kl 0:00 = 0 (sekunder), tirsdag kl 0:00 = 60*60*24 (sekunder) - osv. Og at alle mandage er ens, og alle tirsdage er ens.Så vil du kunne betragte enhver uge som 0 = mandag kl 0 og ehhver tirsdag kl 0 = 60*60*24 - osv. - Det kræver bare, at du tweeker unix time således at du adderer (4 * enDag - enTime) for at få unixtime til at være en mandag kl 0:00.
..see ?
Da man her opererer med EN UGE, så hvorfor ikke bruge tiderne (korrigeret unixtime % 7 dage) for at få 0 for mandag kl 0:00 osv. - også lettere til at angive de forskellige skillelinjer.
Ja, arne, men (som jeg forstår opgaven) så taler vi ikke om en speciel dag, men en periode - altså fra tidspunkt A til tidspunkt B, hvor satsen er diffencieret. Hvis man gør det på min måde, får du altid et tidsrum, som er nemt at parse. Du får altid et (eller flere) tidsrum mellem 0 (mandage kl 0:00) og 60*60*24*7-1 (søndage kl 23:59:59). Og så er det let at sige: 0 til x = den takst x til y = en anden takst y til z = en helt anden takst.
Husk: perioden reduceres til ma - sø med modulus.
Vi er jo ikke interesseret i tidspunkteternes absolutte kalendermæssige beliggenhed - blot i deres relative ugemæssige beliggenhed.
$yourTime = ((now + $unixTimeCorr) % $yourTime); //Nu er $yourTime et tal mellem 0 og $enUge. og så bestemmer //du simpelthen bare, at fra 0 til 18 * $enTime koster det dét. //og så videre....
jeg har muligvis (det er jo sent) ikke ret i ovenstående - men (!) jeg har ret i, at du skal opløse dine datoer i ugevise representationer. Og ved ovenstående $unixTimeCorr får du alligned unixTime = 0 til mandage kl 0:00:00...
Fordi jeg ikke tror at den virker hvis $t1 ikke starter på en hel time!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.