Volledige versie bekijken : Datum .getTime probleem
FredericCox
%Europe/Berlin %735 %2005, 18:38
Hallo,
Ik wil twee datums vergelijken. Het gaat om voetbalmatchen.
Stel een match wordt woensdag 5 juli om 18:00 gespeeld en de volgende week spelen ze dus om 12 juli om 18:00
Nu moet ik dus alleen nakijken op de dag vd week, en uur + minuten
trace(EnglishLeagueName + " / " + Soort)
trace("nu= " + nu)
trace("matchStart= " + matchStart)
trace("nu.getDay() = " + nu.getDay())
trace("matchstart.getDay() = " + matchStart.getDay())
trace("nu.getTime() = " + nu.getTime())
trace("matchStart.getTime() = " + matchStart.getTime())
trace("matchEnd.getTime() = " + matchEnd.getTime())
trace("++++++++++++++++++++++")
if(nu.getDay() == matchStart.getDay() && nu.getTime() >= matchStart.getTime() && nu.getTime() <= matchEnd.getTime()){
Als er een match bezig is moet hij dus in die if springen maar dat doet ie niet
Dit is de uitkomst van de trace
Germany / cup
nu= Tue Jul 5 18:32:00 GMT+0200 2005
matchStart= Tue Jul 12 18:00:00 GMT+0200 2005
nu.getDay() = 2
matchstart.getDay() = 2
nu.getTime() = 1120581120000
matchStart.getTime() = 1121184000000
matchEnd.getTime() = 1121190300000
Ziet iemand de fout? Mijn if statement klopt volgens mij
Flasher
%Europe/Berlin %742 %2005, 18:48
getDay geeft de dag van de week (0=maandag,1=dinsdag enz)
getDate geeft de dag van de maand(1-31)
kweet niet of dat je probleem was, maar misschien ligt het hieraan :confused:
FredericCox
%Europe/Berlin %742 %2005, 18:49
getDay geeft de dag van de week (0=maandag,1=dinsdag enz)
getDate geeft de dag van de maand(1-31)
kweet niet of dat je probleem was, maar misschien ligt het hieraan :confused:
Nee want ik moet de dag van de week hebben , dat stuk klopt ook, 2=2
Flasher
%Europe/Berlin %747 %2005, 18:56
Date.getTime() geeft het aantal milliseconden terug sinds 1 jan 1970. Waarom vergelijk je dan ook nog de dagen in de week??? (domme vraag misgien)
FredericCox
%Europe/Berlin %754 %2005, 19:07
Date.getTime() geeft het aantal milliseconden terug sinds 1 jan 1970. Waarom vergelijk je dan ook nog de dagen in de week??? (domme vraag misgien)
Omdat de XML de datum veranderd als de match start. En dan is die wedstrijd volgens de PC niet meer bezig.
Dus ik vergelijk tijdens de match eigenlijk Woe 5 Jul 2005 18:00 met Woe 12 Jul 2005 18:00
Dus ik heb alleen Woe en 18:00 nodig
kH_
%Europe/Berlin %771 %2005, 19:30
Als de IF statement als resultaat False oplevert, dan klopt dit en wel om de volgende reden:
if(nu.getDay() == matchStart.getDay() && nu.getTime() >= matchStart.getTime() && nu.getTime() <= matchEnd.getTime())
Kijk eens even goed naar je nu.getTime(). Deze is niet GROTER OF GELIJK aan matchStart.getTime(), maar juist KLEINER:
nu.getTime() = 1120581120000
matchStart.getTime() = 1121184000000
En aangezien er 1 variabele in de AND al onwaar is, is de gehele IF dus onwaar ;)
Je IF klopt inderdaad wel (lijkt mij zo in ieder geval wel), maar de match begint nog nie, duzz...
FredericCox
%Europe/Berlin %922 %2005, 23:07
Als de IF statement als resultaat False oplevert, dan klopt dit en wel om de volgende reden:
if(nu.getDay() == matchStart.getDay() && nu.getTime() >= matchStart.getTime() && nu.getTime() <= matchEnd.getTime())
Kijk eens even goed naar je nu.getTime(). Deze is niet GROTER OF GELIJK aan matchStart.getTime(), maar juist KLEINER:
nu.getTime() = 1120581120000
matchStart.getTime() = 1121184000000
En aangezien er 1 variabele in de AND al onwaar is, is de gehele IF dus onwaar ;)
Je IF klopt inderdaad wel (lijkt mij zo in ieder geval wel), maar de match begint nog nie, duzz...
Kijk eens naar de trace:
Germany / cup
nu= Tue Jul 5 18:32:00 GMT+0200 2005
matchStart= Tue Jul 12 18:00:00 GMT+0200 2005
nu.getDay() = 2
matchstart.getDay() = 2
nu.getTime() = 1120581120000
matchStart.getTime() = 1121184000000
matchEnd.getTime() = 1121190300000
18:32 is toch wel groter dan 18:00?
Roenes
%Europe/Berlin %973 %2005, 00:21
Kijk eens naar de datum van matchstart :) Deze is 12 juli en daardoor zullen het aantal milliseconden groter zijn als die van nu. Dus blijft je if false :)
FredericCox
%Europe/Berlin %974 %2005, 00:22
Kijk eens naar de datum van matchstart :) Deze is 12 juli en daardoor zullen het aantal milliseconden groter zijn als die van nu. Dus blijft je if false :)
Inderdaad, maar hoe los ik dat op:) alleen de dag vd week, het uur en de minuut mogen meetellen
Roenes
%Europe/Berlin %976 %2005, 00:26
Geen getTime() gebruiken :D
Je zult van beide dagen de dag moeten opslaan met getDay(), de uren met getHours() en de minuten met getMinutes(). Dan kun je een soortgelijke check erop los laten tussen beide objecten om te kijken of de dag, uren en minuten overeen komen.
Dit moet wel lukken lijkt me en anders laat je het maar weer horen :)
Dauntless
%Europe/Berlin %982 %2005, 00:34
Geen getTime() gebruiken :D
Je zult van beide dagen de dag moeten opslaan met getDay(), de uren met getHours() en de minuten met getMinutes(). Dan kun je een soortgelijke check erop los laten tussen beide objecten om te kijken of de dag, uren en minuten overeen komen.
Dit moet wel lukken lijkt me en anders laat je het maar weer horen :)
Ik had het volgende voorgesteld: tijdVanMatch - 1000*60*60*24*7 en dan heb je de juiste tijd, ten opzichte van de huidige dag... Maar op de een of andere manier werkte dat ook niet...
Roenes (of iemand anders): waarom niet? :$
Roenes
%Europe/Berlin %991 %2005, 00:47
Zou volgens mij naar behoren moeten werken. Moet je natuurlijk wel dat getal van de wedstrijd van 12 juli aftrekken. Als het goed is trek je met jouw berekening er precies een week af.
Ik weet zo ook niet waarom het niet werkt. Misschien haakjes om de hele * zooi zetten? Maar volgens mij hanteerd flash de voorrangsregels en is dat overbodig. Misschien dat ik morguh helderder ben en zie waar het aan ligt :)
kH_
%Europe/Berlin %259 %2005, 07:13
Een tijd vergelijken is vrij eenvoudig door het gewoon naar seconden te vertalen. Ik heb
even een voorbeeldje gemaakt:
var datum:Date=new Date();
var secondsNow:Number;
var secondsMatch:Number;
var hourMatch:Number=12;
var minuteMatch:Number=00;
var secondMatch:Number=00;
secondsNow=datum.getHours()*3600;
secondsNow+=datum.getMinutes()*60;
secondsNow+=datum.getSeconds();
secondsMatch=hourMatch*3600;
secondsMatch+=minuteMatch*60;
secondsMatch+=secondMatch;
if(secondsNow>=secondsMatch)
{
trace("MATCH STARTED!");
}
Dit werkt zonder problemen en ik denk dat je hiermee wel uit de voeten kunt.
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.