Avatar billede lizardine Nybegynder
23. august 2001 - 22:56 Der er 8 kommentarer og
1 løsning

Læg antal dage til en dato i javascript

Hej

Hvordan lægger man dage til en dato i javascript
F.eks.
    myDate = \"01-01-2001\";
Det jeg så gerne vil er at lægge f.eks. 5 dage til datoen.
    myDate = myDate+5;

Men den holder jo ingen steder - så hvordan gør man?
Er det noget med at man skal konverterer \"myDate\" til datoformat eller hvordan?

Bemærk venligst at myDate ikke er lige med Date(), da hvis det var tilfældet var det ikke noget problem at lægge ekstra dage til.

Håber fandme at der nogle der kan hjælpe ;)
Avatar billede roenving Novice
23. august 2001 - 23:06 #1
Du klarer det nemmest ved at bruge et Date-object:

myDate = new Date();
myDate.setTime(2001,01,01);//jeg har ikke den fulde reference på mig, men den zq vist du
dageTil = 5;
mSecs = myDate.getMilliseconds();
myDate.setMilliseconds(mSecs+(dageTil*24*60*60*1000));
return myDate.getDate;

Nu kan jeg jo godt lide get/setMilliseconds, og det er en absolut angivelse, som der kan regnes på ;-)

hth
jes
Avatar billede lizardine Nybegynder
23. august 2001 - 23:20 #2
Det er ret cool det der - men jeg ønsker den samlede dato. F.eks. myDate = \"01-01-2001\"
myDate = myDate+5
myDate ville så være 07-01-2001.

Kan du følge mig? ;)
Avatar billede roenving Novice
23. august 2001 - 23:28 #3
Det er vel også det du får tilbage (Jeg har ikke lige referencen, så jeg checker lige om lidt):

function addDays(y,m,d,ad){
  myDate = new Date();
  myDate.setTime(y,m,d);//jeg har ikke den fulde reference på mig, men den zq vist du
  dageTil = ad;
  mSecs = myDate.getMilliseconds();
  myDate.setMilliseconds(mSecs+(dageTil*24*60*60*1000));
  return myDate.getDate();
}

så skulle du gerne få en d. 6/1-2001 tilbage (i et eller andet format), hvis du kaldte den med addDays(2001,1,1,5)
Avatar billede roenving Novice
23. august 2001 - 23:31 #4
Der var selvfølgelig den fejl at date giver 6 tilbage, så det skal være:
return myDate.toLocaleString();

Undskyld !·|
Avatar billede lizardine Nybegynder
23. august 2001 - 23:38 #5
Hvis jeg udskriver myDate.toLocaleString(); får jeg \"6. januar 1970 01:00:02\" og det er selv om at
y,m,d,ad = 2001,02,13,10

Hvad gør jeg forkert?
Avatar billede roenving Novice
23. august 2001 - 23:47 #6
Jeg gjorde forkert :·[

  myDate = new Date(y,m,d);//og slet den næste linje
Avatar billede roenving Novice
23. august 2001 - 23:51 #7
Og hvis du så kun vil have datoen tilbage:

ret = myDate.toLocaleString();
return ret.substring(0, ret.lastIndexOf(\" \")-1);
Avatar billede lizardine Nybegynder
23. august 2001 - 23:51 #8
Fuck mand - det virker. Tusind tak.
Lige et sidste spørgsmål. Hvis y,m,d = 2001,01,20
bliver det udskrevet som 20 februar 2001 og ikke 20 januar 2001?

Ellers endnu engang mange tak ;)
Avatar billede roenving Novice
23. august 2001 - 23:54 #9
Yeah, man ...
Af en eller anden grund er månedernes navne indekseret fra 0 (som alt andet i javascript faktisk), så du må nok konvertere, eller lave date-constructor-kaldet om til:

myDate = new Date(y,m+1,d);
hth
jes
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