代码之家  ›  专栏  ›  技术社区  ›  leora Matt Lacey

javascript中有什么东西可以将“August”转换为8吗?

  •  9
  • leora Matt Lacey  · 技术社区  · 14 年前

    我需要将Monthname转换为那个月的整数(并且要避免一个大的switch语句)。有什么想法吗?

    6 回复  |  直到 14 年前
        1
  •  12
  •   CaffGeek    14 年前

    只需在那个月创建一个日期,解析它,然后使用 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!
    
        2
  •  4
  •   Pointy    14 年前
    var monthtbl = { 'January': 1, 'February': 2, /* ... */, 'August', 8, /* ... */, 'December': 12 };
    // ...
    var monthNumber = monthtbl[monthName];
    

    编辑 但是按照@Chad建议的方式去做:-)

    如果您想使它对字母大小写不敏感,您可以创建一个全部小写的对象(“monthtbl”),然后使用

    var monthNumber = monthtbl[monthName.toLowerCase()];
    
        3
  •  3
  •   Achilles    14 年前

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

    var months = {August: 8};
    
        4
  •  2
  •   Nick Craver    14 年前

    $.inArry() ,如下所示:

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

        5
  •  0
  •   Cristian Sanchez    14 年前
    function monthToNumber(month) {
        return new Date(Date.parse("1 "+month)).getMonth()+1;
    }
    
        6
  •  0
  •   Vikas Hardia    11 年前

    这里的值保存月份名称值

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