Avatar billede cesil Nybegynder
30. juli 2003 - 15:40 Der er 6 kommentarer og
1 løsning

samme dato i kalender

Hej Eksperter

Hvem kan forklare hvorfor der er to gange den 26 oktober i den her kalender. Det er sgu for mærkeligt.

<html>
<head>
    <title>Subscript Products</title>
</head>
<body>
<form name="form">
<input type="hidden" id="yy" name="year">
<input type="hidden" id="mm" name="month">
<input type="hidden" id="dd" name="day">
        <span id="calendar" name="startdate" style="border:1px;background-color:white;z-index:100;width:130; height:20px; position:absolute; overflow:visible" onmouseout="document.getElementById('calendar').style.height='20px';" onmouseover="document.getElementById('calendar').style.height='225px';">
        </span>
</form>
</body>
</html>

<script type="text/javascript" language="javascript">
nu1 = new Date();
generateCalendar(01,10,2003);


function generateCalendar(date,month,year) {

var monthNames = new Array(12);
monthNames[0] = 'January';
monthNames[1] = 'Febrary';
monthNames[2] = 'Marts';
monthNames[3] = 'April';
monthNames[4] = 'May';
monthNames[5] = 'June';
monthNames[6] = 'July';
monthNames[7] = 'August';
monthNames[8] = 'September';
monthNames[9] = 'October';
monthNames[10] = 'November';
monthNames[11] = 'December';
var calendar;
var day = new Date(year,month-1,01);
var tempday = day.getDay()-1;
if (tempday == -1)
    tempday = 6;
day = new Date(day.valueOf()-86400000*(tempday));

calendar  =  '  <table bgcolor="#FFFFFF" cellspacing="0" id="calendar1" width="100%" style="z-index:100">';
calendar +=  '    <tr height="20"><td colspan="9" class="month"><a href="java script:generateCalendar(' + date + ',' + ((month==1)?12:month-1) + ',' + ((month==1)?year-1:year) + ');">&lt;</a>' + date + '. ' + monthNames[month-1] + ' ' + year + '<a href="java script:generateCalendar(' + date + ',' + ((month==12)?1:month+1) + ',' + ((month==12)?year+1:year) + ');">&gt;</a></td></tr>';
calendar +=  '    <tr><td></td><td class="c"></td><td class="day">s</td><td class="day">m</td><td class="day">t</td><td class="day">w</td><td class="day">t</td><td class="day">f</td><td class="day">s</td></tr>'
calendar +=  '    <tr><td class="c"></td><td class="c"></td><td colspan="7" class="hline"></td></tr>'
for (y = 0;y <= 5;y++)
{
  calendar +=  '    <tr><td class="week"></td>';
  if (y == 0)  calendar +=  '    <td rowspan="6" class="vline"></td>'
  //alert (day.getDate())
  for (x = 0; x <= 6;x++) {
    if (day.getMonth()==month-1) {
      calendar +=  '<td class="d"><a href="java script:generateCalendar(' + day.getDate() + ',' + month + ',' + year + ');">' + day.getDate() + '</a></td>'
    } else {
      calendar +=  '<td class="d">&nbsp;</td>'
    }
      day = new Date(day.valueOf()+86400000);
  }
  calendar +=  '    </tr>';
}
calendar +=  '  </table>';
document.form.year.value = year;
document.form.month.value = month;
document.form.day.value = date;
document.getElementById('calendar').innerHTML = calendar;
}
  </script>
Avatar billede roenving Novice
30. juli 2003 - 17:03 #1
Kunne ikke finde en begrundelse, men en løsning:

  dato = new Date(dato.getFullYear(),dato.getMonth(),dato.getDate()+1);

-- som det måske fremgår har jeg prøvet at udelukke en masse muligheder, f.eks. konflikter i variabel-navne, men det kunne jeg ikke finde ??-)
Avatar billede cesil Nybegynder
31. juli 2003 - 08:21 #2
Hej roenving
Jeg kan ikke lige se hvad du vil ændre.
Hvor vil du bruge din dato?

Jeg har selv fundet en løsning, dog en ikke god nødløsning.
Hvis
day = new Date(day.valueOf()-86400000*(tempday));
ændres til
day = new Date(day.valueOf()-96400000*(tempday));
så virker det faktisk. Jeg aner ikke hvorfor.

Men jeg vil hellere bruge din løsning hvis du kan vise hvordan jeg skal bruge den.

//Henrik
Avatar billede roenving Novice
31. juli 2003 - 14:15 #3
Det er sommertiden, som spiller ind !-)

Derfor virker både din og min løsning ...

Det som jeg gør er at lægge en hel dag til datoen og ikke lægge et antal sekunder til, så den ikke opdager at tiden ændres en time kl. 2-3 stykker om natten, så den _rigtige_ løsning er, at du ændrer dit script til at hente tiden kl. 12 (som så afhængig af sommer-/vintertid kan være kl. 11 eller kl. 13), altså:

day = new Date(day.valueOf()-86400000*(tempday)+43200000);

-- ofte er det de nemmeste ting, som er de sværeste at se '-)
Avatar billede roenving Novice
31. juli 2003 - 14:18 #4
-- forøvrigt er det bedre (og/eller rigtigere !-) at bruge .getTime() og ikke .valueOf() ...

.valueOf() er en nedarvet funktion (fra objektet object Object) og dermed forvekslelig og ikke entydig som .getTime()
Avatar billede cesil Nybegynder
31. juli 2003 - 14:52 #5
sådan der. Tak for hjælpen.
Avatar billede roenving Novice
31. juli 2003 - 16:13 #6
Velbekomme -- og tak for points ;~}
Avatar billede tupsy Nybegynder
24. oktober 2003 - 11:17 #7
Måske I også kan løse samme problem i denne kalender :
http://www.eksperten.dk/spm/418084
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