13:51
Подсчёт "Сколько лет пользователю"

Подсчёт возраста человека

<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>

 

Просмотров: 75 | Добавил: astrajker | Рейтинг: 0.0/0
Всего комментариев: 0
avatar