在JS中将月份名称转换为月份号码的最简单方法?(Jan = 01)

l2a*_*lba 23 javascript date

只想将Jan转换01(日期格式)

我可以使用,array()但寻找另一种方式......

有什么建议吗?

Aar*_*ine 69

为了好玩我做了这个:

function getMonthFromString(mon){
   return new Date(Date.parse(mon +" 1, 2012")).getMonth()+1
}
Run Code Online (Sandbox Code Playgroud)

奖励:它还支持完整的月份名称:-D或者只是返回-1的新改进版本 - 如果需要,可以将其更改为抛出异常(而不是返回-1):

function getMonthFromString(mon){

   var d = Date.parse(mon + "1, 2012");
   if(!isNaN(d)){
      return new Date(d).getMonth() + 1;
   }
   return -1;
 }
Run Code Online (Sandbox Code Playgroud)

Sry进行所有编辑 - 超越自我

  • +1这可能是最慢的,但它也是此页面上唯一的答案,它不区分大小写,区域安全,具有明显的意图,并且在输入错误时具有良好的故障模式. (4认同)

Ale*_* K. 43

其他方式;

alert( "JanFebMarAprMayJunJulAugSepOctNovDec".indexOf("Jun") / 3 + 1 );
Run Code Online (Sandbox Code Playgroud)

  • 这是一个简洁的解决方案,但如果我在代码中看到我拥有,我可能会将其重写为半可理解的东西. (6认同)
  • 你可以将这个想法扩展到完整的月份名称(3个字符名称仍然可以使用),例如"1月___ 2月_ 3月_ _ 4月_ _月5月_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ @ _为什么10个字符,而不是9?_所以如果你想反过来,你可以修剪`.indexOf('_')` (3认同)

Pau*_* S. 24

如果你不想要一个数组那么对象怎么样?

var months = {
    'Jan' : '01',
    'Feb' : '02',
    'Mar' : '03',
    'Apr' : '04',
    'May' : '05',
    'Jun' : '06',
    'Jul' : '07',
    'Aug' : '08',
    'Sep' : '09',
    'Oct' : '10',
    'Nov' : '11',
    'Dec' : '12'
}
Run Code Online (Sandbox Code Playgroud)


Vik*_*dia 10

还有一种方法可以做到这一点

month1 = month1.toLowerCase();
var months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
month1 = months.indexOf(month1);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但您应该在“month1”中加 1 才能获得正确的月份值。函数 getMonthFromString(mon){ 让month1 = mon.toLowerCase(); 让月份= [“janvier”,“février”,“mars”,“avril”,“mai”,“juin”,“juillet”,“août”,“九月”,“十月”,“十一月”,“十二月” ”]; return (months.indexOf(month1)+1); } (4认同)

小智 9

对于 2021 年仍在关注这个答案的人来说,toLocaleDateString现在已经得到了广泛的支持

let monthNumberFromString = (str) => {
  return new Date(`${str} 01 2000`).toLocaleDateString(`en`, {month:`2-digit`})
}
// monthNumberFromString(`jan`) returns 01
Run Code Online (Sandbox Code Playgroud)


Akh*_*ran 8

我通常用来做一个功能:

function getMonth(monthStr){
    return new Date(monthStr+'-1-01').getMonth()+1
}
Run Code Online (Sandbox Code Playgroud)

称之为:

getMonth('Jan');
getMonth('Feb');
getMonth('Dec');
Run Code Online (Sandbox Code Playgroud)


chi*_*son 7

如果您使用的是moment.js:

moment().month("Jan").format("M");
Run Code Online (Sandbox Code Playgroud)