Avatar billede tknudsen Nybegynder
12. november 2001 - 13:55 Der er 10 kommentarer og
2 løsninger

Date objektet

Ved afvilking af følgende funktion (i IE 6.0) får jeg 1. december i alert\'en - er der andre der lige gider at prøve - og evt komme med et bud på at løse mit problem...:

function test()
{
    dt = new Date();
    dt.setDate(31);
    dt.setMonth(11);
    dt.setYear(2001);

    alert(dt.toGMTString());
}
Avatar billede jumper Nybegynder
12. november 2001 - 13:57 #1
Dag starter ved 0, og der er altså kun 30 dage i November - derfor vil dag 31 i November være lig med 1. December.

dt.setDate(30);

/Thor
Avatar billede tknudsen Nybegynder
12. november 2001 - 14:02 #2
det er .setMonth() der ar offset = 0 - så .setMonth(11) er december
Avatar billede jumper Nybegynder
12. november 2001 - 14:03 #3
Avatar billede tknudsen Nybegynder
12. november 2001 - 14:04 #4
jumper >> hvilken browser har du testet det i ?
Avatar billede jumper Nybegynder
12. november 2001 - 14:07 #5
http://msdn.microsoft.com/library/en-us/script56/html/js56jsmthsetdate.asp

\"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.\"

Kan du ikke blot bruge

dt = new Date(2001,11,31)

/Thor
Avatar billede tknudsen Nybegynder
12. november 2001 - 14:36 #6
\"riddle me this...\"

prøv lige følgende (læg mærke til date offset\'et :-) :

    var dt = new Date(2001,11,2);
    alert(dt.toGMTString());


den giver 1-12-2001

og

    var dt = new Date(2001,11,32);
    alert(dt.toGMTString());

giver 31-12-2001
Avatar billede jakoba Nybegynder
12. november 2001 - 19:47 #7
Sært, jeg har brugt den \'overflow ind i næste/forrige måned\' opførsel uden problemer. Men dine eksempler er klart forkerte.
Hvilken browser bruger du?
Avatar billede tknudsen Nybegynder
16. november 2001 - 11:42 #8
>> jakoba jeg har testet det på i ie5.0 og ie6.0

(undskyld den lange svartid)
Avatar billede jakoba Nybegynder
16. november 2001 - 12:01 #9
Lad os lige tænke lidt

Du siger:
{
    dt = new Date();    // 16 november 2001
    dt.setDate(31);      // 31 november findes ikke så det blive 1 dec 2001
    dt.setMonth(11);    // ændrer ingen ting. det er december allerede
    dt.setYear(2001);    // og året
    alert(dt.toGMTString());
}
men hvis du gør det samme i en måned med 31 dage i
{        // kørt 16 oktober 2001
    dt = new Date();    // 16 oktober 2001
    dt.setDate(31);      // 31 oktober findes så det blive 31 okt 2001
    dt.setMonth(11);    // ændrer ændrer til 31 dec 2001
    dt.setYear(2001);    // og året
    alert(dt.toGMTString());
}
Programmet gør som du beder det om. Det er rækkefølgen og kørselstidspunktet der gør det.
Sæt de forskellige værdier i omvendt rækkefølge:

{
    dt = new Date();
    dt.setYear(2001);
    dt.setMonth(11);
    dt.setDate(311);
    alert(dt.toGMTString());
}

mvh JakobA
Avatar billede tknudsen Nybegynder
16. november 2001 - 13:55 #10
det ser jo ganske rigtigt ud :-)


jeg har osse selv fundet ud af at .toGMTString() ikke altid fortæller hele sandheden - noget med tidszoner og sådan

Ihvertfald fik jeg:

Date(2001,31,12) til at returnere 31. december...
Avatar billede jakoba Nybegynder
16. november 2001 - 14:10 #11
Ahh, jeg ku netop heller ikke fatte at din
    var dt = new Date(2001,11,2);
    alert(dt.toGMTString());
skulle give 1-12-2001

men hvis du har testet imellem 23:00 og midnat så passer det jo at GMT er \'dagen før\'

Avatar billede jakoba Nybegynder
16. november 2001 - 14:12 #12
jeg roder. Det skulle være: \"testet imellem midnat og 01:00\"  pløkforvirrende :-))
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