Помогите дополнить скрипт
Всем привет.
Есть скрипт <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, время: 11:16. |