Avatar billede perh Juniormester
19. august 2003 - 16:33 Der er 7 kommentarer og
1 løsning

konvertering af string

Jeg skal behandle indholdet af en tekstbox i en form.
tekstboksen indeholder en dato dd-mm-yyyy
f. eks 22-08-2003
jeg skal have det konverteret til 2003234 (som er året efterfulgt af dagens nummer i året).

Så jeg skal have trukket 2003 ud og sat foregående måneds dagetal bagved og lagt dd til: 2003 + 212(dage før 1. august) + 22

Det er noget med reg.exp?
Avatar billede roenving Novice
19. august 2003 - 16:44 #1
Næh nok nemmest med et par date-objekter:

<script type="text/javascript">
function makeDayNumber(d){
dato = new Date(d.substring(6),(+d.substring(3,5)-1),d.substring(0,2));
first = new Date(d.substring(6),0,1);
numDays = Math.floor((dato.getTime()-first.getTime())/(1000*60*60*24));
numDays = "00"+numDays;
numDays = numDays.substring(numDays.length-3);
return d.substring(6) + numDays;
}
</script>

-- ganske utestet !-)
Avatar billede roenving Novice
19. august 2003 - 16:49 #2
-- der skal bruges Math.round i stedet for Math.floor pga. sommertiden !-)
Avatar billede roenving Novice
19. august 2003 - 16:50 #3
-- og hvis du skal have dag-nummeret skal der lægges een til, da 1/1 tælles som nul-dagen ...
Avatar billede perh Juniormester
19. august 2003 - 17:35 #4
Jeg synes ikke at den vil tage det datoformat 22-08-2003 som input?

Jeg kan indsætte
d = "22-08-2003";
og så virker det, men jeg kan ikke overføre datoen i funktionskaldet?
Avatar billede perh Juniormester
19. august 2003 - 17:53 #5
Jo, nu har jeg fundet ud af det.
Mange tak for hjælpen, giv mig et svar, så du kan få dine point.
Avatar billede roenving Novice
19. august 2003 - 17:54 #6
Jeg testede det sådan:

onchange="alert(makeDayNumber(this.value));"

-- jeg gætter du skal bruge this.value ...

-- og du kan så lige få koden, så den giver præcis det resultat du forventer:

<script type="text/javascript">
function makeDayNumber(d){
dato = new Date(d.substring(6),(+d.substring(3,5)-1),d.substring(0,2));
first = new Date(d.substring(6),0,1);
numDays = Math.round((dato.getTime()-first.getTime())/(1000*60*60*24))+1;
numDays = "00"+numDays;
numDays = numDays.substring(numDays.length-3);
return d.substring(6) + numDays;
}
</script>
Avatar billede roenving Novice
19. august 2003 - 17:54 #7
Velbekomme '-)
Avatar billede roenving Novice
19. august 2003 - 18:35 #8
-- og tak for points ;~}
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