18. marts 2002 - 16:23Der er
7 kommentarer og 1 løsning
Datosammenligning ved brug af Date.parse giver uventet resultat
Jeg har kæmpet en god del med at få sammenligning af tidspunkter til at virke.klokkeslettet er for så vidt vigtigt. Hvis jeg ikke lavede nedenstående ikke særlig kønne omvej virkede tidsdelen i hvert fald ikke og .getVarDate() tostring del ser jo heller ikke rigtig køn ud.
Problemet med nedenstående er: deadline tidsmæssigt før Bookeddate --> intet problem
deadline tidsmæssigt efter Bookeddate ---> intet problem, hvis det blot er inden for samme måned i.e. Bookeddate = 31-03-2002 15:00:00 men ikke 01-04-2002 15:00:00.
Psykiatrisk hjælp søges, for nu er jeg stået af. Det kører somsagt som et Javascript på klienten. Jeg har ikke prøvet Jscrip på serveren, men det skulle vel ikke give en forskel ????
Skal jeg da til at lave det i VBscript ????
Hjælp - mit hår bliver gråt.
Henrik
PS frm.deadline.value kommer fra en record p.t access 2000 data objekt og står som tekst: 01-04-2002 15:00:00
PSS - det har for helvede ikke noget med US format at gøre: 17-03 læses som 03/17 og 01-04 læses som 01/04
Hvad gør jeg! ------
function ValidateForm(frm) { var i; var txtmsg = ""; var dato= new Date(); var dag = dato.getDate(); var md = dato.getMonth()+1; var aar = dato.getYear(); var time = dato.getHours(); var minut = dato.getMinutes(); var sek = dato.getSeconds(); var Bookeddate = dag + "-" + md +"-" + aar + " " + time + ":" + minut + ":" + sek; //18-03-2002 15:00:00 //Bookdato.getVarDate(); if ( (Date.parse(Bookeddate)-0) - (Date.parse(frm.deadline.value)-0) > 0 ) txtmsg += "Beklager men - Bookingtidspunktet "+ Bookeddate + " har overskredet deadline " + frm.deadline.value + "\n";
//else //alert("Fint Nok - Bookingtidspunktet "+ Bookeddate + " har ikke overskredet deadline " + frm.deadline.value + "\n" ); //alert( (Date.parse(Bookeddate)-0) - (Date.parse(frm.deadline.value)-0) );
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
cms problemet er/var ikke dato objektet men formodentlig parse metoden fortolkning af frm.deadline.valuen - det var ikke en konsistent fortolkning.
Du skal have tak for forsøget anyway. Henrik
Jeg har løst problemet på følgende måde:
function checkDato(datostr) {
var dd = parseInt( datostr.substring(0,2), 10); var dm = parseInt( datostr.substring(3,5), 10); var dy = parseInt( datostr.substring(6,10), 10); var dti = parseInt( datostr.substring(11,13), 10); var dmn = parseInt( datostr.substring(14,16), 10); var dsec = parseInt( datostr.substring(17,19), 10);
//vi forudsætter her, at vi altid har 4 cifre if (isNaN(dmn)||isNaN(dsec) ) { dti=23; dmn=59; dsec=59; }
if ( dy < 50 ) // så dette her er noget pjat dy += 2000 else if ( dy <= 99) dy += 1900;
var pdato = new Date( dy, dm-1, dd, dti, dmn, dsec ); // den givne dato og klokkeslet //alert( pdato.toString()); var nudato = new Date(); // lige nu var diff = nudato.valueOf() - pdato.valueOf();
function ValidateForm(frm) { var i; var txtmsg = ""; var dato= new Date(); var dag = dato.getDate(); var md = dato.getMonth()+1; var aar = dato.getYear(); var time = dato.getHours(); var minut = dato.getMinutes(); var sek = dato.getSeconds();
var Bookeddate = dag + "-" + md +"-" + aar + " " + time + ":" + minut + ":" + sek;
var datooverskredet = checkDato(frm.deadline.value);
if ( datooverskredet) txtmsg += "Beklager men - Bookingtidspunktet "+ Bookeddate + " har overskredet deadline " + frm.deadline.value + "\n";
Jeg lukker lige sagen. Ovenstående kører som en drøm
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.