Autor | Zpráva | ||
---|---|---|---|
Karmel Profil * |
Prosím o pomoc někoho, kdo by uměl získat skript z této stránky: http://www.prckoviste.cz/karolina
Jde mi o ten výpočet věku. Děkujuuuu. Moderátor Davex: Titulek „Prosím o pomoc se získáním JS z externího souboru“ nevystihuje podstatu dotazu. Příště zkus prosím vymyslet lepší.
|
||
Joker Profil |
#2 · Zasláno: 9. 1. 2011, 10:48:48
Ten výpočet věku (alespoň na první pohled) vypadá spíš dělaný skriptem na serveru, než JS.
Ovšem i v JS by nebylo tak těžké to udělat, na to stačí objekt Date, metody getFullYear, getMonth a getDate a odčítání. Objekt Date dokonce umí i „podtéct“ záporné hodnoty do předchozího měsíce/roku, jen je potřeba si dát pozor, že měsíce jsou číslované 0-11 a ne 1-12 (takže třeba 1 je únor), zatímco dny normálně od jedničky a 0 je už poslední den předchozího měsíce (takže například new Date(2011, 0, -1) je 30. prosince 2010 a new Date(2011, 1, 0) je 31. ledna 2011)
|
||
Karmel Profil * |
Joker:
Já mám tento skript, ovšem nějak mi v tom roce 2011 začíná haprovat a neumím to opravit, aby fungoval. Pířklad přímo k dnešku, tj. 9.1.2011. Kdybych na 9. řádku nedala toto: var monthOfToday = today.getMonth() + 1; //chyba … ukazovalo by mi to, že je dítěti 7 měsíců, při tom je mu k dnešnímu dni 8 měsíců. Až bude ovšem 1.2.2011 a já tam nechám to +1, tak se mi ukáže 9 měsíců a 23 dní, místo 8 měsícu a 23 dní. Takže to hapruje při začátku nového měsíce a při dni, kdy má dané dítě narozeniny a já vůbec neumím odhalit, v čem je zakopaný pes. Poradíte? <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> Moderátor Davex: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Časová prodleva: 14 let
|
0