Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите дополнить скрипт (https://javascript.ru/forum/misc/72576-pomogite-dopolnit-skript.html)

angaric 09.02.2018 15:49

Помогите дополнить скрипт
 
Всем привет.
Есть скрипт
<script type="text/javascript">var mdate = new Date(); document.write(mdate.getFullYear()-1995);</script>

Показывает: 23

Но мне нужно 23 года. Т.е. склонение год, года, лет.

Я не спец в этом. Что нужно добавить или вставить.

Dilettante_Pro 09.02.2018 17:19

Решение в лоб
<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 лет все портят, а то можно было бы массив и подсократить - использовать декадами

j0hnik 09.02.2018 17:52

Dilettante_Pro,
это ваще жесть :yes:

рони 09.02.2018 17:55

angaric,
https://javascript.ru/forum/misc/351...tml#post231512

Dilettante_Pro 09.02.2018 17:55

j0hnik,
Такая жисть:write:

BNB 09.02.2018 17:57

Решение через функцию:

//** 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]);
  }

рони 09.02.2018 18:02

склонение окончаний
 
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>

j0hnik 09.02.2018 18:09

<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, время: 01:46.