Помогите дополнить скрипт
Всем привет.
Есть скрипт <script type="text/javascript">var mdate = new Date(); document.write(mdate.getFullYear()-1995);</script> Показывает: 23 Но мне нужно 23 года. Т.е. склонение год, года, лет. Я не спец в этом. Что нужно добавить или вставить. |
Решение в лоб
<script type="text/javascript"> var mdate = new Date(); var years = ["лет","год","года","года","года","лет","лет","лет","лет","лет","лет","лет","лет","лет","лет","лет","лет","лет","лет","лет","лет","год","года","года",]; // и т.д. var age = mdate.getFullYear()-1995; document.write(age + " " + years[age]); </script> 11, 12, 13, 14 лет все портят, а то можно было бы массив и подсократить - использовать декадами |
Dilettante_Pro,
это ваще жесть :yes: |
|
j0hnik,
Такая жисть:write: |
Решение через функцию:
//** mdate: [object Date] **//
function checkAge(mdate) {
var age = mdate.getFullYear()-1995;
var prefixes = {
"0": "лет",
"1": "год",
"2": "года",
"3": "года",
"4": "года",
"5": "лет",
"6": "лет",
"7": "лет",
"8": "лет",
"9": "лет"
};
if (age >= 11 && age <= 14) {
document.write(age + " " + "лет");
return;
}
var strAge = age + "";
var lastNum = strAge.slice(strAge.length-1);
document.write(age + " " + prefixes[lastNum]);
}
|
склонение окончаний
angaric,
<script>
var plural = function(b) {
return function(a) {
return b[1 == a % 10 && 11 != a % 100 ? 0 : 2 <= a % 10 && 4 >= a % 10 && (10 > a % 100 || 20 <= a % 100) ? 1 : 2]
}
};
var d = plural([' год', ' года', ' лет'])
var mdate = (new Date()).getFullYear() - 1995;
document.write(mdate + d(mdate));
</script>
|
<script> f=n => n+" "+['год', 'года', 'лет'][(n%100>4 && n%100<20)?2:[2, 0, 1, 1, 1, 2][(n%10<5)?n%10:5]]; var age = new Date().getFullYear()-1995; document.write(f(age)); </script> |
| Часовой пояс GMT +3, время: 06:13. |