Есть ли что-нибудь в javascript, который может конвертировать "Август" в 8? - PullRequest
9 голосов
/ 25 августа 2010

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

Ответы [ 6 ]

12 голосов
/ 25 августа 2010

Просто создайте дату в этом месяце, проанализируйте ее и используйте 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!
4 голосов
/ 25 августа 2010
var monthtbl = { 'January': 1, 'February': 2, /* ... */, 'August', 8, /* ... */, 'December': 12 };
// ...
var monthNumber = monthtbl[monthName];

редактировать но делайте так, как предлагает @Chad: -)

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

var monthNumber = monthtbl[monthName.toLowerCase()];
3 голосов
/ 25 августа 2010

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

var months = {August: 8};
2 голосов
/ 25 августа 2010

Еще один вариант, чтобы просто выбросить туда, вы можете использовать массив и $.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 может быть гораздо проще.

0 голосов
/ 26 мая 2014

здесь значение содержит значение названия месяца

var month1 = value;
month1 = month1.toLowerCase();
var months = [ "January", "February", "March", "April", "May", "June",   "July", "August", "September", "October", "November", "December" ];
month1 = months.indexOf(month1);
0 голосов
/ 25 августа 2010
function monthToNumber(month) {
    return new Date(Date.parse("1 "+month)).getMonth()+1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...