Месяц в JavaScript Не очень

Как я могу сделать это лучше?

var month = new Array();

month['01']='Jan';
month['02']='Feb';
month['03']='Mar';

и т.д.. Хотелось бы сделать это так:

var months = new Array(['01','Jan'],['02','Feb'],['03','Mar']);

Например. в любом случае, чтобы упростить его?

Ответы

Ответ 1

это должно сделать это.

var months = {'01':'Jan', '02':'Feb'};
alert( months['01'] );

Ответ 2

Для более естественного подхода попробуйте этот маленький фрагмент. Он работает с объектами Date и как регулярная функция:

'use strict';

(function(d){
    var mL = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
    var mS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];

    d.prototype.getLongMonth = d.getLongMonth = function getLongMonth (inMonth) {
        return gM.call(this, inMonth, mL);
    }

    d.prototype.getShortMonth = d.getShortMonth = function getShortMonth (inMonth) {
        return gM.call(this, inMonth, mS);
    }

    function gM(inMonth, arr){
        var m;

        if(this instanceof d){
            m = this.getMonth();
        }
        else if(typeof inMonth !== 'undefined') {
            m = parseInt(inMonth,10) - 1; // Subtract 1 to start January at zero
        }

        return arr[m];
    }
})(Date);

Вы можете напрямую скопировать и вставить это, а затем использовать его следующим образом:

var today = new Date();
console.log(today.getLongMonth());
console.log(Date.getLongMonth(9));          // September
console.log(today.getShortMonth());
console.log(Date.getShortMonth('09'));      // Sept

Этот метод обеспечит гибкость в отношении того, как вы индексируете и как вы обращаетесь к нему. При использовании объекта Date он будет работать правильно, но если использовать его как отдельную функцию, он считает месяцы в человеко-читаемом формате от 1 до 12.

Скрипт с ним!

Ответ 3

почему бы и нет:

var month = [
  'Jan', 
  'Feb', 
  // ...
  'Dec'];

Чтобы получить имя месяца от номера, вы сделаете что-то вроде:

var monthNum = 2; // February
var monthShortName = month[monthNum-1];

Ответ 4

Не используйте Array, если вы не используете реальные числовые индексы. Попробуйте следующее:

var month = {
    '01': 'Jan',
    '02': 'Feb',
    // ...
    '12': 'Dec'
};

Лично, однако, я бы включил эту логику в функцию:

var monthNames = ['Jan', 'Feb', /* ... */ 'Dec'];
function getMonthName(n) {
    return monthNames(n - 1);
}

alert(getMonthName(1)); // 'Jan'

Таким образом, вам никогда не придется думать о базовой структуре данных или беспокоиться о ее изменении позже.

Ответ 5

Вот очень простой способ получить название месяца:

<script>
function getMonth(month){
    month = month-1;
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];

    if(months[month] != null){
        return months[month];
    }else{
        throw "Invalid Month No";
    }
}

try{
    monthName = getMonth(8);
    alert("Month Is : " + monthName);
}catch(e){
    console.log(e);
}
</script> 

Ответ 6

import java.util.*;

public class NumOfMonth
{
  public static void main(String args[]) {

    Scanner in = new Scanner (System.in);

    String months[] = {"","Jan", "Feb", "March", "april" , "june", "july", "august", "sept", "oct", "nov","Dec`1"};
    int m = 0;
    System.out.format("enter the number of month:");
    m = in.nextInt();
    System.out.println(months[m]);
  }
}