Gå til innhold

HVA: new date(2007,31,5) gir 1.6.2007


Anbefalte innlegg

Ja det er riktig,

 

jeg får inn en dato via ajax, den er på formatet 31.5.2007 (ddmmyyyy)

Gjør denne om til et date object for å kjøre kalkulasjoner på den.

 

Koden: dato1="31.5.2007";

a2=dato1.split(".");

var startdato=new Date(a2[2],a2[1],a2[0]);

alert(startdato); gir sunday 1 jul 2007

samme problemet med andre dager med 31 dager men ikke med 28 eller 30

 

Har noen vært borte i dette før?

Fikser eller workarouds?

Tenker på å bare sjekke om (startdato.getMonth()!=a2[1]) && (a2[0]==31)

i såfall bygge opp dato på nytt

 

Magne Moe

Lenke til kommentar
Videoannonse
Annonse

Jup, har testet den rundt på kontoret her likt på alle pcene.

Det virker som den ikke godtar 31 dagers måneder men gjørdem om til 1 i måneden etter.

Har også prøvd med startdato.setdate(31)

 

Fra msdn

http://msdn2.microsoft.com/en-us/library/txfkf2t2.aspx

If the value of numDate is greater than the number of days in the month stored in the Date object or is a negative number, the date is set to a date equal to numDate minus the number of days in the stored month. For example, if the stored date is January 5, 1996, and setDate(32) is called, the date changes to February 1, 1996. Negative numbers have a similar behavior.

 

Så den skal gå til neste dato, men det virker som date objektet ikke godtar mer en 30 dager i måneden. Har nå prøvd å sette dato på tre måter og det virker ikke.

 

Prøvde også startdato.setHours(-24);

den trekker fra en dag på alle datoer untatt datoer som 1.6.2007 de blir fortsatt 1.6.2007

 

Dette tyder på at javascript ikke tror mai har 30 dager, for da ville du fått 30.5.2007 som svar, den finner riktig svar og så blir den endret til 1.6.2007 etterpå

 

-------

 

Prøver nå å gjenopplive min gamle tanke om 30 dagers måneder, de 5 eksta dagene telles ikke, legger dem på første nyttårsdag, 2 og 18 mai, etter sanktans, andre juledag siden du alikevell har bakrus og vil glemme den dagen.

Lenke til kommentar

Hei

fant feilen her, javascript teller måneder fra 0-11 ikke 1-12 som vanlig.

Dager telles 1-31, Dette gjør at new Date('2007','5','31'); er 31 juni ikke 31 mai, denne datoen finnes ikke og neste brukes.

Må trekke fra 1 vær gang jeg sender en måned inn i javascript.

 

var startdato=new Date(a2[2],a2[1]-1,a2[0]);

Må konvertere tilbake i ajax kallet.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...