Avatar billede ast Nybegynder
02. oktober 2001 - 13:52 Der er 15 kommentarer og
1 løsning

Sliding window til tid over 24 timer

hvordan kan man lave en funktion der kun tillader at et givent klokkelset bliver godtaget hvis det ligger inden for de sidste 24 timer.
Avatar billede jakoba Nybegynder
02. oktober 2001 - 14:37 #1

var indtastet = new Date( aar, maaned, dag, time, minut, sekund );
        // hvor  aar, maaned, dag, time, minut, sekund  blev indtastet.
var nu = new Date();  // klokken lige nu

if ( ny.valueOf() > ( indtastet.valueOf() + 24*60*60*1000 ) ) {
    // den er ok
} else {
    // den er for gammel
    return false;
}

mvh JakobA
Avatar billede jakoba Nybegynder
02. oktober 2001 - 14:38 #2
Ups. stavefejlt i if betingelsen  ny.valueOf()  ->  nu.valueOf()
Avatar billede ast Nybegynder
02. oktober 2001 - 14:41 #3
var indtastet, hvorledes skal værdinen af det indtastede skrives deri.
Avatar billede ast Nybegynder
02. oktober 2001 - 14:52 #4
var indtastet = new Date(document.frm.toTime.value);
denne giver NaN og et yderligere problem er at jeg kun har klokkeslettet med over, og ikke en hel dato
Avatar billede Slettet bruger
02. oktober 2001 - 15:11 #5
Men hvis du kun har klokkeslættet med over, hvordan vil du så tjekke for, om det er indenfor de næste 24 timer? Det vil alle klokkeslæt vel være!?
Avatar billede ast Nybegynder
02. oktober 2001 - 15:13 #6
jep der er en pointe. :(
Avatar billede jakoba Nybegynder
02. oktober 2001 - 15:14 #7
Ja. et program kan ikke forventes at forstå en dato indtastet i det format brugeren lige synes er det bedste. Der findes MEGET forskellige formater.
fx i USA skriver de  5/6/2001
hvor europere skriver 6/5/2001
for 6\'te maj 2001
så du skal styre brugeren og være helt sikker på at du får de rigtige væredier for år, måned, dag, osv
og de værdier bruger du så til at lave dit new Date( ... ) kald. med kommaer imellen.

mvh JakobA
Avatar billede ast Nybegynder
02. oktober 2001 - 15:27 #8
lige nu får jeg eks 12:49 ud og det er tiden som jeg skal arbejde med. så der skal vel sættes en dato på for at ovenstående kommmer til at virke.
Avatar billede Slettet bruger
02. oktober 2001 - 15:44 #9
Ja, det var lige det, jeg mente! :-)
Men så kan du jo også bare bede om en dato, eller du kan vælge kun at godtage klokkeslæt indenfor 12 timer af den indtastede tid!

P.S. Vær lige så venlige at kommentere http://www.eksperten.dk/spm/116170, tak!
Avatar billede ast Nybegynder
02. oktober 2001 - 15:53 #10
ville det så ikke også være muligt kun at godtage klokkeslæt indenfor 24 timer eller 23.59.59 timer af den indtastede tid? For så er problemet løst.
Avatar billede ast Nybegynder
02. oktober 2001 - 16:32 #11
har stadig store problemer. får tiden xx:xx ud af følgende en form, men magter tilsyneladende ikke at sammensætte denne med dagsdato således ovenstående script kan anvendes.
Avatar billede jakoba Nybegynder
02. oktober 2001 - 22:55 #12
følgende en hvilken form ?
Avatar billede ast Nybegynder
03. oktober 2001 - 08:51 #13
document.frm.toTime.value
Jeg har lavet to strenge(dd.mm.yy hh:mm) med tiderne der skal sammenlignes men jeg går ud fra at de skal konventeres til en date for det kan lade sig gøre.
Avatar billede jakoba Nybegynder
03. oktober 2001 - 10:59 #14
Ja. Du skal lave  Date  objekter ud af de to datoer:

i head:
<script language=\'javascript\'> <!--

function makeDate( dateXind ) {
    var aar = parseInt( dateXind.substring(6,8), 10 );
    if ( aar > 50 ) aar += 1900 else aar += 2000; // Y2K fix
    var maaned = parseInt( dateXind.substring(3,5), 10 )-1;
    var dag = parseInt( dateXind.substring(0,2), 10 );
    var time = parseInt( dateXind.substring(9,11), 10 );
    var minut = parseInt( dateXind.substring(12,14), 10 );
    return new Date (aar, maaned, dag, time, minut, 0 );
}; //end makeDate( string ) -> Date objekt


function sammenlign () {
    var dato1 = new Date()      // klokken lige nu
    var dato2 = makeDate( document.frm.toTime.value );  // det indtastede
//i format dd.mm.yy tt:mm.  eg \"20.09.01 22:55\";

    if (  dato1.valueOf() >= dato2.valueOf()
      && dato1.valueOf() < ( dato2.valueOf()) + 24*60*60*1000 ) {
        alert( \"indtastet er indenfor de sidste 24 timer\" )
        return true;
    }
    return false;
}; //end sammenlign () -> boolean

// --> </script>

i body:
<a href=\"java script:void( sammenlign() )\">sammenlign</a>

mvh JakobA
Avatar billede ast Nybegynder
03. oktober 2001 - 13:23 #15
tak for hjælpen :) Skulle næsten have givet nogle flere point så meget som der er blevet skrevet...
Avatar billede jakoba Nybegynder
03. oktober 2001 - 13:36 #16
helt ok.
takker
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester