我需要将Month Name转换为该月的整数(并且希望避免使用大的switch语句)。任何想法?
答案 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);