| 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: 15 let
|
|||
0
).