Подсчёт возраста человека
<script>
function declOfNum(number, titles) { // склонение именительных рядом с числительным
cases = [2, 0, 1, 1, 1, 2];
return number+" "+titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}
document.write( declOfNum(Код возраста пользователя, ['год', 'года', 'лет']) );
</script>
|
Сравнение дат в формате «год месяц день»
16 лет 4 месяца 14 дней
<script>
function declOfNum(number, titles) {
cases = [2, 0, 1, 1, 1, 2];
return number+" "+titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}
function birthDateToAge(b, n) {
var x = new Date(n), z = new Date(b), b = new Date(b), n = new Date(n);
x.setFullYear(n.getFullYear() - b.getFullYear(), n.getMonth() - b.getMonth(), n.getDate() - b.getDate());
z.setFullYear(b.getFullYear() + x.getFullYear(), b.getMonth() + x.getMonth() + 1);
if (z.getTime() == n.getTime()) {
if (x.getMonth() == 11) {
return [x.getFullYear() + 1, 0, 0];
} else {
return [x.getFullYear(), x.getMonth() + 1, 0];
}
} else {
return [x.getFullYear(), x.getMonth(), x.getDate()];
}
}
var birth = birthDateToAge("2000-03-01", "2016-07-15");
document.write( declOfNum(birth[0], ['год', 'года', 'лет']) + " " + declOfNum(birth[1], ['месяц', 'месяца', 'месяцев']) + " " + declOfNum(birth[2], ['день', 'дня', 'дней']) ); // birth[0] — разница между датами в годах
</script>
|
Вычисление возраста по дате рождения
Пример: калькулятор возраста по дате рождения
<script>
function declOfNum(number, titles) {
cases = [2, 0, 1, 1, 1, 2];
return number+" "+titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}
function birthDateToAge(b) {
var n = new Date(), b = new Date(b),
age = n.getFullYear() - b.getFullYear();
return n.setFullYear(1972) < b.setFullYear(1972) ? age - 1 : age;
}
document.write( declOfNum(birthDateToAge("1880-07-15"), ['год', 'года', 'лет']) );
</script>
|
Подсчёт разницы лет
<script>
function declOfNum(number, titles) {
cases = [2, 0, 1, 1, 1, 2];
return number+" "+titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}
document.write( declOfNum(new Date().getFullYear() - 1880, ['год', 'года', 'лет']) );
</script>
|
Определить количество дней между двумя датами
<script>
function declOfNum(number, titles) {
cases = [2, 0, 1, 1, 1, 2];
return number+" "+titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}
function birthD(b, n) {
var b = new Date(b), n = new Date(n);
return (n - b)/86400000;
}
document.write( declOfNum(birthD("2000-03-01", "2016-07-15"), ['день', 'дня', 'дней']) );
</script>
|
|