logische test

Status
Niet open voor verdere reacties.

flower92

Nieuwe gebruiker
Lid geworden
22 apr 2010
Berichten
2
Hallo!:D

Ik moet voor school een opdracht doen.
Je moet de datum verhogen, maar daarbij rekening houden met het schrikkeljaar.
Ik heb het nu zover dat ik de datum wel kan verhogen, en ook met maand en jaar erbij, maar ik snap niet hoe je het kan doen met het schrikkeljaar. Ik weet wel dat het schrikkeljaar deelbaar moet zijn door 4. aangegeven met: (jaar%4 == 0)
Kan iemand mij daar misschien bij helpen?

Dit is wat ik tot nu toe heb:


HTML:
<html>
<head>

<script language=JavaScript>
function verhoogDatum() 
{

	dag=parseInt(document.formdatum.dag.value)
	maand=parseInt(document.formdatum.maand.value)
	jaar=parseInt(document.formdatum.jaar.value)

	if (maand == 2)
	{
		max=28
	}
	else
	{
		if ((maand == 4) || (maand == 6) || (maand == 9) || (maand == 11))
		{
			max = 30
		}
		else
		{
			max = 31
		}
	}
	
	if (dag == max)
	{
		dag = 1
		if (maand == 12)
		{
			maand = 1
			jaar = jaar + 1
		}
		else
		{
			maand = maand + 1
		}
	}
	else
	{
		dag = dag + 1
	}
	
	document.formdatum.dag.value = dag+''
	document.formdatum.maand.value = maand+''
	document.formdatum.jaar.value = jaar+''

}

</script>


</head>

<body>
<form name="formdatum" method="post">
<input name="dag" type="text" value="1" size="5"> 
<input name="maand" type="text" value="1" size="5">
<input name="jaar" type="text" value="2010" size="5">

<input type="button" name="Convert" value="verhoog datum" onClick="verhoogDatum()"> 

</form>
</body>
</html>


Byee!;)
 
Een schrikkeljaar is (deelbaar door 4 en niet door 100) of (deelbaar door 400). Als het alleen deelbaar door 4 zou zijn, zouden b.v. 1900, 2000 en 2100 een schrikkeljaar zijn, wat niet het geval is. Alleen 2000 (deelbaar door 400).
 
dus dan krijg je dit...:
((jaar%4==0) && ((jaar%100) != 0) || (jaar%400 == 0)) )


maar hoe moet je dat er dan verder in verwerken?
 
In Excel gebruik je de volgende functie :

Function IsLeapYear(Year As Integer) As Boolean
If ((Year Mod 4 = 0) And (Year Mod 100 <> 0) Or (Year Mod 400 = 0)) Then
IsLeapYear = True
Else
IsLeapYear = False
End If
End Function

In VB ongeveer hetzelfde. In Javascript zou ik het niet weten, daar heb ik mij nog nooit mee bezig gehouden.
 
aan het eind van je normale berekening denk ik zo:
[JS]if( jaar % 4 == 0 && (jaar % 100 != 0 || jaar % 400 == 0) )
{
dag++;
}[/JS]

overgens moet parseInt wel een 2e parameter hebben, je base, dus dat wordt dan zoiets:
[js]var foo = parseInt(bar, 10);[/js]
en je variabelen initialiseren door er var voor te zetten.



:thumb:


[edit]mooier:[js]function isSchrikkelJaar(jaar)
{
return jaar % 4 == 0 && (jaar % 100 != 0 || jaar % 400 == 0);
}


//en dan op de goede plek:

if(isSchrikkelJaar(jaar))
{
dag++;
}[/js][/edit]
 
Laatst bewerkt:
Hier, dit heb ik er even snel van geknutseld. Geen idee of het logisch goed werkt, maargoed:
HTML:
<! doctype html>

<html>


   <head>
 
      <script type='text/javascript'>

         function verhoogDatum() 
         {
            var max;
 
            var dag   = parseInt(document.getElementById('dag').value,   10);
            var maand = parseInt(document.getElementById('maand').value, 10);
            var jaar  = parseInt(document.getElementById('jaar').value,  10);

            dag++;

            switch(maand)
            {
               case 2:
                  max = 28;
               case 4:
               case 6:
               case 9:
               case 11:
                  max = 30;

               default:
                  max = 31;
            }

            if(dag == max)
            {
               dag = 1;
               maand++;
            }

            if(maand == 12)
            {
               maand = 1;
               jaar++;
            }


            /* bereken schrikkeljaar */

            if(jaar % 4 == 0 && (jaar % 100 != 0 || jaar % 400 == 0) && maand == 2)
            {
               dag++;
            }


            document.getElementById('dag').value   = dag;
            document.getElementById('maand').value = maand;
            document.getElementById('jaar').value  = jaar;
         }
 
      </script>

   </head>
 
   <body>

      <form name="formdatum" method="post">

         <input name="dag"   id='dag'   type="text" value="1"    size="5"> 
         <input name="maand" id='maand' type="text" value="1"    size="5">
         <input name="jaar"  id='jaar'  type="text" value="2010" size="5">
 
         <input type="button" name="convert" value="verhoog datum" onclick="verhoogDatum();"> 
      </form>



   </body>


</html>
 
Of: :)
[js]function isSchrikkelJaar(jaar) {
return new Date(jaar,1,29).getDate() == 29;
};[/js]

javascript heeft een ingebouwd datum object met allerlei functies:
http://www.w3schools.com/js/js_obj_date.asp

Dat telt ook automatisch door, zo wordt 32 januari automatisch 1 februari.

Een eigenaardigheid is wel dat januari 0 is, februari 1, maart 2 ... december 11. :confused:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan