Avatar billede entracore Nybegynder
12. december 2001 - 11:45 Der er 7 kommentarer og
1 løsning

Find resterende antal dage i en måned.

Hey

Hvis jeg har en streng i javascript der hedder:
dateString = \'12-10-2001\'

og jeg gerne vil finde ud af hvor mange dage der er tilbage i den pågældende måned(10) - er der så en funktion i javascript der kan gøre dette... eller skal man selv biske noget sammen?
Avatar billede nikolajdu Nybegynder
12. december 2001 - 11:48 #1
Gælder det kun for Oktober i år???

For ellers skal vi til at regne godt med skudår ud også.
Avatar billede entracore Nybegynder
12. december 2001 - 11:49 #2
Det er generelt... alle måneder... og skudår :)
Avatar billede tknudsen Nybegynder
12. december 2001 - 11:53 #3
function isLeapYear(year)
{
    var result = false;
    var div4,div100,div400;

    div4 = year % 4;
    div100 = year % 100;
    div400 = year % 400;

    result = ((div4==0) & (div100!=0)) || ((div100==0) && (div400==0))
    return result;
}

function getRemainingDays(month)
{
  var MONTH = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

  var now = new Date();

  if(month==2 && isLeapYear(now.getYear())
    MONTH[1] = 29;

  return MONTH[month-1] - now.getDay();
}

alert(\'Dage tilbage i November: \'+getRemainingDays(11));
Avatar billede tknudsen Nybegynder
12. december 2001 - 11:57 #4
ups - et par fejl:

der mangler en ) efter now.getYear()) - så det bliver:

if(month==2 && isLeapYear(now.getYear()))

og så skal det være:

return MONTH[month-1] - now.getDate();
Avatar billede tknudsen Nybegynder
12. december 2001 - 12:01 #5
du kan osse lave det så du sender en date() over i funktionen getRemaninigDays():

function getRemainingDays(dt)
{
  var MONTH = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

  if(dt.getMonth()==1 && isLeapYear(dt.getYear()))        // i javascript er måneder 0-relativ - dvs måned 1 er februar
    MONTH[1] = 29;

  return MONTH[dt.getMonth()] - dt.getDate();
}

var now = new Date();
alert(\'Dage tilbage i måned: \'+getRemainingDays(now));
Avatar billede tknudsen Nybegynder
12. december 2001 - 12:03 #6
så kan du selv bestemme hvilken dato du vil teste for:

var now = new Date(1996,1,1); // husk måned 1 er februar (januar=0)
alert(\'Dage tilbage i måned: \'+getRemainingDays(now));
Avatar billede entracore Nybegynder
12. december 2001 - 12:28 #7
Mange tak for hjælpen :)
Avatar billede tknudsen Nybegynder
12. december 2001 - 12:30 #8
hmm - har lige læst HELE dit spørgsmål :-) og kan se at der mangler konverteringen fra streng til dato:

function strToDate(dateStr) // forventer at dato strengen er i formatet DD-MM-YYYY
{
  var dateElems = dateStr.split(\'-\');
  var dt = new Date(parseInt(dateElems[2],10),parseInt(dateElems[1],10)-1,parseInt(dateElems[0],10));

  return dt;
}

så det bliver:

var dateString = \'12-10-2001\';
var now = strToDate(dateString);
alert(\'Dage tilbage i måned: \'+getRemainingDays(now)); 
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

IT-JOB