есть ли в javascript что-то, что может преобразовать «август» в 8?

мне нужно преобразовать имя месяца в целое число того месяца (и хочу избежать большого оператора switch). есть идеи?

9
задан balpha 25 August 2010 в 18:40
поделиться

5 ответов

Просто создайте дату в этом месяце, проанализируйте ее и используйте getMonth() вот так

function convertMonthNameToNumber(monthName) {
    var myDate = new Date(monthName + " 1, 2000");
    var monthDigit = myDate.getMonth();
    return isNaN(monthDigit) ? 0 : (monthDigit + 1);
}

alert(convertMonthNameToNumber("August"));     //returns 8
alert(convertMonthNameToNumber("Augustsss"));  //returns 0 (or whatever you change the default too)
alert(convertMonthNameToNumber("Aug"));        //returns 8 - Bonus!
alert(convertMonthNameToNumber("AuGust"));     //returns 8 - Casing is irrelevant!
12
ответ дан 4 December 2019 в 10:02
поделиться

Другой вариант, который можно просто выбросить, вы можете использовать массив и $ .inArry () , например:

var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
function getMonth(name) {
  return $.inArray(name, months) +1;
}

​​Хотя, судя по вашим предыдущим вопросам, получение даты непосредственно из объекта datepicker пользовательского интерфейса jquery может быть намного проще.

2
ответ дан 4 December 2019 в 10:02
поделиться
var monthtbl = { 'January': 1, 'February': 2, /* ... */, 'August', 8, /* ... */, 'December': 12 };
// ...
var monthNumber = monthtbl[monthName];

edit , но делайте это так, как предлагает @Chad: -)

Если вы хотите сделать его нечувствительным к буквенному регистру, вы должны создать объект ("monthtbl") все в нижнем регистре, а затем используйте

var monthNumber = monthtbl[monthName.toLowerCase()];
4
ответ дан 4 December 2019 в 10:02
поделиться

Вы можете создать массив (пары имя/значение) в своем коде, так как прошло всего 12 месяцев, и написать для этого функцию.

var months = {August: 8};
3
ответ дан 4 December 2019 в 10:02
поделиться
function monthToNumber(month) {
    return new Date(Date.parse("1 "+month)).getMonth()+1;
}
0
ответ дан 4 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: