06. januar 2006 - 08:24Der er
11 kommentarer og 1 løsning
Tjek om start- og udløbsdato er valide.
Hej alle. Jeg har lavet en side hvor man kan indføre beskeder med start- og udløbsdato. Disse datoer har formatet 'yyyy-mm-dd hh:ii:ss'. Brugeren bestemmer dem ved anvendelse af en serie af selectbokse. For at undgå at datoer som f.eks. 30. februar bliver indtastet kontrollerer et php-script om de overførte datoer er valide. For ikke at belaste severen unødvendigt ville det være praktisk hvis et javascript kunne klare opgaven før data overføres. Mere precist skal jeg kunne teste datoerne for følgende: 1) er de valiide. 2) er de før el. efter dags dato. 3)kommer udløbsdato før el efter startdato. Kan nogle give mig et hint? Mvh Christian.
Der ud over er der selvfølgelig tilsvarende select for måned, dag... for både ikraftrædelse og udløbsdato, altså <select name="begynd_maaned"> ... og der er også noget textarea og php-kode sikrer at 'selected' er placeret korrekt hvis beskededen skal redigeres. Processen fungerer men jeg ønsker at fejlmeddelelser kommer før jeg kalder "rediger_info_ex.php" fordi denne side i forvejen foretager nogle ret komplicerede handlinger, så koden kan blive svær at overskue for andre programmører der i fremtiden skulle ønske at redigere den. Mvh Christian
Der skal testes på om dato + tidspunkt er ok: Et par eksempler: 1) starttidspunkt: "2006-02-30 12:00:00" er forkert (30. februar findes ikke) 2) starttidspunkt: "2006-01-06 11:00:00" er forkert fordi klokken nu er 11:45. 3) starttidspunkt: "2006-01-06 15:00:00" og udløbstidspunkt: "2006-01-06 12:00:00" er forkert fordi starttid er senere end udløbstid. Det skal nævnes at mit php-script sikrer at select for årstal altid starter med indeværende år og 3 år frem. Lige nu er altså ikke muligt at vælge 2005. Mvh Christian
function validDates(frm){ if(!isDate(frm.begynd_aar.value,frm.begynd_maaned.value,frm.begynd_dag.value)){ alert("Begynd ikke valid") return false; } if(!isDate(frm.slut_aar.value,frm.slut_maaned.value,frm.slut_dag.value)){ alert("Begynd ikke valid") return false; } begynd=frm.begynd_aar.value+""+twoDigits(frm.begynd_maaned.value)+""+twoDigits(frm.begynd_dag.value)+""+twoDigits(frm.begynd_time.value)+""+twoDigits(frm.begynd_minut.value)+""+twoDigits(frm.begynd_sekund.value); slut=frm.slut_aar.value+""+twoDigits(frm.slut_maaned.value)+""+twoDigits(frm.slut_dag.value)+""+twoDigits(frm.slut_time.value)+""+twoDigits(frm.slut_minut.value)+""+twoDigits(frm.slut_sekund.value); if(begynd<=doLongDate()){ alert("begynd skal være senere end dagsdato") return false; } if(begynd>=slut){ alert("slut skal være senere end begynd") return false; } return true; }
Tak skal du have for dit SVAR - SVAR. I starten havde jeg lidt svært ved af forstå is date, men så vidt jeg forstår bestemmer den hvor mange dage der er i måneden mm? (jeg tror ikke mit system lever i år 2100). Tak for dit hint - jeg fandt stien til løsningen. Mvh Christian P.s.: Vidste du at der helt uanmeldt er blevet foretaget et skud-sekund i år. Et sekunds mindre rente kan godt blive til en del når bankernes computere overfører pengene efter 1 dags handel på New York's børs!
-- det var et sekund, der blev skudt ind, så uret med UTC-tid sagde: 23:59:59, 23:59:60, 00:00:00 !-)
-- så der kunne have været mange penge i at have mange penge det rigtige sted ...
-- men mon ikke den slags simpelthen overses !o]
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.