Avatar billede nethuset Nybegynder
19. juli 2001 - 15:31 Der er 13 kommentarer og
2 løsninger

check om dato er før dags dato

Ja, hvordan skriver man lige dette her:

check om dato er før dags dato, og hvis true så alert med \"Dato for [xValue] er før dags dato!\"

havde tænkt mig noget med en checkDato(xValue), så den kan skrive xValue i alert\'en....

Håber I kan hjælpe :-)


/Kenneth

Avatar billede jakoba Nybegynder
19. juli 2001 - 15:36 #1
det kemmer helt gevaldig meget an på hvilket datoformat du lægger i parameteren xValue.

hvis du fortæller os hvad du vil stoppe i den er det hurtigt at lave en funktion der foretager testen.

mvh JakobA
Avatar billede nute Nybegynder
19. juli 2001 - 15:36 #2
<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">
<!--

//-->
</SCRIPT>

<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">
<!--

var days = [31, 28, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30];
var dayList, monthList, yearList, thisDate, dValue, mValue, yValue;

function initList(){
  thisDate  = new Date();
  dayList  = \"<select name=\\\"day\\\" size=\\\"1\\\">\\n\";
    dayList  += generateList(1, days[thisDate.getMonth()], thisDate.getDate() );
    dayList  += \"</select>\\n\";
    monthList = \"<select name=\\\"month\\\" size=\\\"1\\\" onChange=\\\"formatDate(this.form);\\\">\\n\"
    monthList += generateList(1, 12, (thisDate.getMonth() + 1) );
    monthList += \"</select>\\n\"
    yearList  = \"<select name=\\\"year\\\" size=\\\"1\\\" onChange=\\\"formatDate(this.form);\\\">\\n\"
    tmpYear=navigator.appName==\"Netscape\"?thisDate.getYear()+1900:thisDate.getYear();
    yearList  += generateList(1975, tmpYear, tmpYear );
    yearList  += \"</select>\\n\"
}

function generateList( start, stop, curVal ){
  var tmpVar = \"\";
    for( i = start; i <= stop; i++ ){
      tmpVar += \"<option value=\\\"\" + i + \"\\\"\" + (i == curVal?\" selected\":\"\") + \">\" + i + \"</option>\\n\";
    }
  return tmpVar;
}

function formatDate( form ){
    dValue  = form.day[form.day.selectedIndex].value;
    mValue = form.month[form.month.selectedIndex].value;
    yValue  = form.year[form.year.selectedIndex].value;
    form.day.options.length = 0;
    days[1]=(yValue%4==0&&yValue%100!=0)||(yValue%400==0)?29:28;
    for (i = 0; i < days[mValue - 1]; i++) {
      form.day.options[i] = new Option(i + 1, i + 1);
        if( i == dValue ){
          form.day.selectedIndex = i - 1;
        }
    }
    if(form.day.selectedIndex<=0&&dValue!=1){
      form.day.selectedIndex = thisDate.getDate() - 1;
    }
}

function checkDate(){
  dValue  = form.day[form.day.selectedIndex].value;
  mValue = form.month[form.month.selectedIndex].value;
  yValue  = form.year[form.year.selectedIndex].value;
  var todayDate = new Date();
    var newDate  = new Date(yValue, (mValue - 1), dValue, todayDate.getHours(), todayDate.getMinutes(), todayDate.getSeconds() );
    alert( \"hey\" );
    if( (Date.parse(todayDate) - Date.parse(newDate) ) > 0 ){
      alert( \"Valgt dato er mindre enn dagens dato!\");
    } else if( (Date.parse(todayDate) - Date.parse(newDate) ) < 0 ){
      alert( \"Valgt dato er større enn dagens dato!\");
    } else {
      alert( \"Dato er den samme!\");
    }
    return false;
}
initList();
document.write(\"<html>\\n<body>\\n<form name=\\\"form\\\" onSubmit=\\\"return checkDate();\\\">\\n\");
document.write(dayList + monthList + yearList);
document.write(\"<input type=\\\"submit\\\"></form></body></html>\");
//-->
</SCRIPT>

/nute
Avatar billede roenving Novice
19. juli 2001 - 15:39 #3
>> nute

Den kan du få brug for næsten hver dag!

:o)
Avatar billede nute Nybegynder
19. juli 2001 - 15:41 #4
roenving >> yup :)

nethuset >> dette spm har du jo stilt en gang før. Hvorfor en gang til ?
Avatar billede nethuset Nybegynder
19. juli 2001 - 16:42 #5
nute >> fordi denne skal kunne noget andet - læs nu lige spørgsmålet igennem igen!

jakoba >> xValue er ikke en dato med en tekststreng...

en del af funktionen kunne se sådan ud:

function checkDato(xValue) {

  udfør datocheck og hvis dato = før d.d. så:
      alert(\"Dato for \"xValue\" er før dags dato!\")
}


og aktiveres med
<input type=\"text\" name=\"navn\" onBlur=\"datoCheck(indtastning)\">

og desuden skal den BLOT ADVARE om at datoen er før d.d., og ikke afbryde!

håber at det kan bruges til noget...

/Kenneth

Avatar billede roenving Novice
19. juli 2001 - 16:49 #6
Så skal du da bare skrive checkDate-funktionen en lille smule om:

function checkDate(this){
  indtastning = new Date(this.value);
  var todayDate = new Date();
    if( (Date.parse(todayDate) - Date.parse(indtastning) ) > 0 ){
      alert( \"Dato for \"+this.value+\" er før dags dato!\");
    }
    return true;
}
hth
jes =;-]
Avatar billede jakoba Nybegynder
19. juli 2001 - 16:50 #7
nethuset >> tak. og HVORDAN SER DEN TEKSTSTRENG UD?
ligger årstallet i de fire første bogstaver eller i de 4 sidste?
den slags er vigtig at vide når man skal programmere sådan noget :)

mvh JakobA
Avatar billede andy Nybegynder
24. juli 2001 - 15:20 #8
tekststrengen ser fx sådan ud: 090801.
dag måned år
Avatar billede roenving Novice
24. juli 2001 - 15:29 #9
var inddato = new Date(tekst.substr(2,2)+\" \"+tekst.substr(0,2)+\". 20\"+tekst.substr(4,2));
var idag = new Date();
if (idag.getMilliseconds-inddato.getMilliseconds>86400000] {
  alert(\"Datoen \"+tekst+\" er før idag -- om igen\");
  return false;
}
Avatar billede jakoba Nybegynder
24. juli 2001 - 15:35 #10

function checkDato ( datostr ) {
    var dd = parseInt( datestr.substring(0,2), 10);
    var dm = parseint( datestr.substring(2,4), 10);
    var dy = parseint( datestr.substring(4), 10);
    if ( dy < 50 )          // korriger for årtusindeskift
        dy += 2000
    else dy += 1900;
    var pdato = new Date( dy, dm-1, dd );    // den givne dato
    var nudato = new Date();                  // lige nu
    var diff = nudato.valueOf() - pdato.valueOf();
    if ( diff > 0 ) {
        alert( \"Dato for \" +datostr +\" er før dags dato );
    } else {
        alert( \"Dato for \" +datostr +\" er efter dags dato );
    }
}; //end checkDato( string )

funktionen virker kun indtil år 2050, så skal den kodes om.

mvh JakobA
Avatar billede jakoba Nybegynder
24. juli 2001 - 15:37 #11
Ups. jeg har stavet  datostr  galt i linerne med parseint. det skal være et o.
Avatar billede andy Nybegynder
24. juli 2001 - 19:32 #12
Jeg kan ikke få jeres funktioner til at virke!

jakoba> Der mangler en \" tilsidst i alert, men det virker stadig ikke. Jeg får overhovedet ingen alert når jeg tester funktionen.
Avatar billede roenving Novice
24. juli 2001 - 19:50 #13
Måske skal du skrive linien:
var inddato = new Date(tekst.substr(2,2)+\" \"+tekst.substr(0,2)+\". 20\"+tekst.substr(4,2));

om således (for at være sikker på, at den altid reagerer på ny dato:

var inddato = new Date(tekst.substr(2,2)+\" \"+tekst.substr(0,2)+\". 20\"+tekst.substr(4,2)+\" 00:00:00\");

hth
jes
Avatar billede andy Nybegynder
24. juli 2001 - 20:18 #14
virker stadig ikke
Avatar billede jakoba Nybegynder
24. juli 2001 - 22:05 #15
function checkDato ( datostr ) {
    alert( \">>>\"+datostr +\"<<<\" );  // bare til test
    var dd = parseInt( datostr.substring(0,2), 10);
    var dm = parseInt( datostr.substring(2,4), 10);
    var dy = parseInt( datostr.substring(4), 10);
    if ( dy < 50 )          // korriger for årtusindeskift
          dy += 2000
    else dy += 1900;
    var pdato = new Date( dy, dm-1, dd );    // den givne dato
    var nudato = new Date();                  // lige nu
    var diff = nudato.valueOf() - pdato.valueOf();
    if ( diff > 0 ) {
        alert( \"Dato for \" +datostr +\" er før dags dato\" );
    } else {
        alert( \"Dato for \" +datostr +\" er efter dags dato\" );
    }
}; //end checkDato( string )

mvh JakobA
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