Prosím o pomoc s javascriptem
Napsal: úte 11. led 2011, 12:42
Prosím o pomoc s následujícím skriptem. Skript počítá věk ve formátu roky, měsíce a dny. Všechno fungovalo v pořádku do doby, než přišel rok 2011. V tomto konkrétním případě se dítě narodilo 9.5.2010. 9.1.2011 tedy dosáhlo věku rovných 8 měsíců. Musela jsem však upravit jeden řádek a přičíst tam +1 měsíc, jinak to ukazovalo, že je dítěti 7 měsíců. Viz řádek var monthOfToday = today.getMonth() + 1; //chyba
Ale když si v PC přenastavím datum na 1.2.2011, ukazuje mi to, že je dítěti 9 měsíců a 23 dní a mělo by být 8 měsíců a 23 dní. Takže 1.2.2011 bych musela zase stejný řádek upravit a měsíc nepřičíst. Vzhledem k tomu, že takto vedu asi 50 dětí, tak bych musela vždy v den jejich celého měsíce, měsíc přičíst a při počátku nového měsíce to zase smazat. Vůbec v kódu ale tu chybu nevidím. Pomozte prosím.
Zde je ten kód:
Ale když si v PC přenastavím datum na 1.2.2011, ukazuje mi to, že je dítěti 9 měsíců a 23 dní a mělo by být 8 měsíců a 23 dní. Takže 1.2.2011 bych musela zase stejný řádek upravit a měsíc nepřičíst. Vzhledem k tomu, že takto vedu asi 50 dětí, tak bych musela vždy v den jejich celého měsíce, měsíc přičíst a při počátku nového měsíce to zase smazat. Vůbec v kódu ale tu chybu nevidím. Pomozte prosím.
Zde je ten kód:
Kód: Vybrat vše
<script>
//Varibles containg values of date of birth : Replace with your own values
//Default date given : 03.11.1981 (dd.mm.yyyy) = my date of birth
var dayOfBirth = 09; //den narozeni
var monthOfBirth = 05; //mesic narozeni
var yearOfBirth = 2010; //rok narozeni :: Use all the 4 digits, not 2 two digits in short form
//Variables containg values of current date
var today = new Date(); //dnešní datum
var dayOfToday = parseInt(today.getDate()); //den dnes
var monthOfToday = today.getMonth() + 1; //chyba
//var monthOfToday = today.getMonth(); //mesíc dnes
//var yearOfToday = today.getYear(); //rok dnes
var yearOfToday = today.getFullYear(); //rok dnes, opraveno kvulí zobrazování v opeře 10.50 jako roku 110
//promenne pozadavané pro výpočet věku
var yearDiff; //počet let
var monthDiff; //počet měsíců
var daysDiff; //počet dní
var totalNumOfDaysOfMonths = [31,28,31,30,31,30,31,31,30,31,30,31];
var ageString;
AgeUptodate();
function AgeUptodate()
{
calcYearDiff();
}
function calcYearDiff()
{
if (monthOfToday > monthOfBirth)
{
yearDiff = yearOfToday - yearOfBirth;
monthDiff = monthOfToday - monthOfBirth;
calcDateDiff();
}
else if (monthOfToday == monthOfBirth)
{
if((dayOfToday == dayOfBirth) || (dayOfToday > dayOfBirth))
{
yearDiff = yearOfToday - yearOfBirth;
}
else
yearDiff = yearOfToday - yearOfBirth - 1;
calcMonthDiff();
}
else
{
yearDiff = yearOfToday - yearOfBirth - 1;
monthDiff = 12 - (monthOfBirth - monthOfToday);
calcDateDiff();
}
}
function calcMonthDiff()
{
if (monthOfToday == monthOfBirth)
{
if (dayOfToday > dayOfBirth)
monthDiff = monthOfToday - monthOfBirth;
else if ( dayOfToday == dayOfBirth )
monthDiff = 0; // That's a Birthday
else
monthDiff = 11; // Birthday coming soon
}
calcDateDiff();
}
function calcDateDiff()
{
if ( yearOfToday % 4 == 0 )
totalNumOfDaysOfMonths[1] = 29;
if (dayOfToday > dayOfBirth)
daysDiff = dayOfToday - dayOfBirth;
else if (dayOfToday == dayOfBirth)
daysDiff = 0;
else
{
daysDiff = ( totalNumOfDaysOfMonths[monthOfToday - 0] - dayOfBirth) + dayOfToday;
}
process();
}
function process()
{
if((monthOfToday > monthOfBirth) && (dayOfToday < dayOfBirth))
monthDiff -= 1;
if(yearDiff == 0)
ageString = '';
else if (yearDiff == 1)
ageString = yearDiff + ' rok';
else if (yearDiff < 5)
ageString = yearDiff + ' roky';
else
ageString = yearDiff + ' roku';
if((!((monthDiff == 0) && (daysDiff == 0))) && (yearDiff != 0))
ageString = ageString + ', ';
if(monthDiff == 0)
ageString = ageString +'';
else if (monthDiff == 1)
ageString = ageString + '1 měsíc ';
else if (monthDiff < 5)
ageString = ageString + monthDiff +' mesice ';
else
ageString = ageString + monthDiff +' mesicu ';
if(daysDiff == 0)
ageString = ageString + '';
else if (daysDiff == 1)
{
if(!(yearDiff == 0) && (monthDiff == 0))
ageString = ageString + 'a 1 den';
else
ageString = ageString + 'a 1 den';
}
else if (daysDiff < 5)
{
if(!(yearDiff == 0) && (monthDiff == 0))
ageString = ageString + 'a ' + daysDiff + ' dny';
else
ageString = ageString + 'a ' + daysDiff + ' dny';
}
else
{
if(!(yearDiff == 0) && (monthDiff == 0))
ageString = ageString + 'a ' + daysDiff + ' dni';
else
ageString = ageString + 'a ' + daysDiff + ' dni';
}
document.write(ageString);
//document.write(ageString);
//document.write('Můj věk dnes je ' + ageString + '.');
//document.write('<br>Dnes je ' + today + ', <br>rok: ' + yearOfToday + ' <br>měsíc:' + monthOfToday + ' <br>den:' + dayOfToday);
//document.write('<br>rok: ' + today.getYear());
}
</script>