是什么javascript可以将“八月”转换为8?

时间:2010-08-25 18:36:47

标签: javascript date

我需要将Month Name转换为该月的整数(并且希望避免使用大的switch语句)。任何想法?

6 个答案:

答案 0 :(得分:12)

只需在该月创建一个日期,然后解析它,然后像这样使用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!

答案 1 :(得分:4)

var monthtbl = { 'January': 1, 'February': 2, /* ... */, 'August', 8, /* ... */, 'December': 12 };
// ...
var monthNumber = monthtbl[monthName];

编辑,但按照@Chad建议的方式进行: - )

如果你想让它对字母大小写不敏感,你可以创建所有小写的对象(“monthtbl”),然后使用

var monthNumber = monthtbl[monthName.toLowerCase()];

答案 2 :(得分:3)

您可以在代码中创建一个数组(名称/值对),因为它只有12个月并且编写了一个函数来完成它。

var months = {August: 8};

答案 3 :(得分:2)

另外一个选择就是扔掉那里,你可以使用一个数组和$.inArry(),如下所示:

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

虽然根据您之前的问题判断,直接从jquery UI datepicker对象中提取日期可能会容易得多。

答案 4 :(得分:0)

function monthToNumber(month) {
    return new Date(Date.parse("1 "+month)).getMonth()+1;
}

答案 5 :(得分:0)

此处值包含月份名称值

var month1 = value;
month1 = month1.toLowerCase();
var months = [ "January", "February", "March", "April", "May", "June",   "July", "August", "September", "October", "November", "December" ];
month1 = months.indexOf(month1);