如何在javascript中将月份名称十月转换为10

时间:2014-10-16 17:04:14

标签: javascript

在java脚本中给出了像“十月”这样的月份

如何转换为月份编号格式?

输出应为“10”,例如。

我有一个名为monthName的变量,它将值赋予“october”,

现在如何将monthName值转换为10

3 个答案:

答案 0 :(得分:4)

这有点像黑客,但是:

var monthName = "October";
var monthNumber = new Date(monthName + " 1").getMonth() + 1;
console.log(monthNumber); // 10;

答案 1 :(得分:3)

如果这是您将使用日期进行的唯一工作,但是您可以使用moment.js library

,这可能有点过头了
moment("October", "MMM").format("M")

输出:

10

显然,您可以使用变量的名称而不是字符串文字" 10月"。

答案 2 :(得分:1)

你可以这样做

function getMonthName() {
    getMonthName.mnths = getMonthName.mnths ||  ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];
    return (getMonthName.mnths.indexOf(monthName.toLowerCase()) + 1);
}
console.log(getMonthName("October")); // 10

只需创建一个月份数组,然后在您尝试查找的月份索引中添加一个。

<小时/> 此方法比使用Date对象更有效,因为月份名称数组被缓存并且只进行查找,而不是创建具有不必要属性的全新Date对象。

此解决方案比使用Date对象快34%。此解决方案不允许使用Oct这样的术语,并且不关心语言环境,但无论如何都不会要求它。如果您需要它们,请使用Date对象。

此外,这是一个很好的解决方案,因为new Date("October 1").getMonth() + 1会在IE10&amp;中为您提供NaN。 11(最新的IE)甚至是最新的Mozilla Firefox。

此解决方案兼容跨浏览器,效率更高,当然也不是解决问题的不良方法。 JS Perf