从date获取月份名称

我怎样才能从这个date对象在JavaScript中生成月份的名称(例如:十月/十月)?

var objDate = new Date("10/11/2009"); 

更短的版本:

 var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; var d = new Date(); document.write("The current month is " + monthNames[d.getMonth()]); 

现在可以使用ECMAScript国际化API来做到这一点:

 var date = new Date("10/11/2009"), locale = "en-us", month = date.toLocaleString(locale, { month: "long" }); 

http://jsfiddle.net/dstorey/Xgerq/

“long”使用月份的全名,短名称使用“short”,使用更小的版本“narrow”,例如字母语言中的第一个字母。

您可以将语言环境更改为您所需的语言环境,并且会使用该语言/国家/地区的正确名称。

使用toLocaleString你必须每次传入语言环境和选项。 如果您要在多个不同date使用相同的语言环境信息和格式化选项,则可以使用Intl.DateTimeFormat

 var formatter = new Intl.DateTimeFormat("fr", { month: "short" }), month1 = formatter.format(new Date()), month2 = formatter.format(new Date(2003-05-12)); // sept. and déc. console.log(month1 + " and " + month2); 

这个API的主要问题是它是新的。 它仅适用于Blink浏览器(Chrome和Opera),IE11,Microsoft Edge和Firefox 29+。 它不被Safari支持。

欲了解更多信息,请参阅我在国际化API的博客文章。

这是另一个,支持本地化:)

 Date.prototype.getMonthName = function(lang) { lang = lang && (lang in Date.locale) ? lang : 'en'; return Date.locale[lang].month_names[this.getMonth()]; }; Date.prototype.getMonthNameShort = function(lang) { lang = lang && (lang in Date.locale) ? lang : 'en'; return Date.locale[lang].month_names_short[this.getMonth()]; }; Date.locale = { en: { month_names: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], month_names_short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] } }; 

您可以轻松地添加对其他语言的支持:

 Date.locale.fr = {month_names: [...]}; 

如果你不介意扩展Date原型(并且有一些很好的理由不想这样做),你可以想出一个非常简单的方法:

 Date.prototype.monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; Date.prototype.getMonthName = function() { return this.monthNames[this.getMonth()]; }; Date.prototype.getShortMonthName = function () { return this.getMonthName().substr(0, 3); }; // usage: var d = new Date(); alert(d.getMonthName()); // "October" alert(d.getShortMonthName()); // "Oct" 

这些函数将应用于所有 javascriptdate对象。

我衷心的推荐这个format函数,你可以这样使用:

 moment().format("MMM"); // "April" - current date moment(new Date(2012, 01, 04)).format("MMM"); // "Feb" - from a local date moment.utc(new Date(2012, 00, 04).format("MMM"); // "Jan" - from a UTC date 

除了其他function的冗长列表之外,它对国际化也有强大的支持 。

你可以使用datejs来做到这一点。 检查FormatSpecifiers ,MMMM给你的月份名称:

 var objDate = new Date("10/11/2009"); document.write(objDate.toString("MMMM")); 

和datejs得到了超过150场所本地化! 看这里

 Date.prototype.getMonthName = function() { var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; return monthNames[this.getMonth()]; } 

它可以用作

 var month_Name = new Date().getMonthName(); 

从date对象的一些常见的简单过程可以通过这个来完成。

 var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; var monthShortNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; function dateFormat1(d){ var t = new Date(d); return t.getDate()+' '+monthNames[t.getMonth()]+', '+t.getFullYear(); } function dateFormat2(d){ var t = new Date(d); return t.getDate()+' '+monthShortNames[t.getMonth()]+', '+t.getFullYear(); } 

或者你可以使date原型像

 Date.prototype.getMonthName = function() { var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; return monthNames[this.getMonth()]; } Date.prototype.getFormatDate = function() { var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; return this.getDate()+' '+monthNames[this.getMonth()]+', '+this.getFullYear(); } 

例如:

var dateFormat3 = new Date().getMonthName(); # March

var dateFormat4 = new Date().getFormatDate(); # 16 March, 2017

尝试:

 var objDate = new Date("10/11/2009"); var strDate = objDate.toLocaleString("en", { day: "numeric" }) + ' ' + objDate.toLocaleString("en", { month: "long" }) + ' ' + objDate.toLocaleString("en", { year: "numeric"}); 

现在的自然格式是使用Moment.js。

在Moment.js中,使用string格式获取月份的方法非常简单,无需在代码中对月份名称进行硬编码:以月份名称格式和全年(2015年5月)获取当前月份和年份:

  moment(new Date).format("MMMM YYYY"); 

这是一种不依赖于硬编码数组并且支持多种语言环境的方法。

如果你需要一个完整的数组:

 var monthsLocalizedArray = function(locale) { var result = []; for(var i = 0; i < 12; i++) { result.push(new Date(2010,i).toLocaleString(locale,{month:"long"})); } return result; }; 

用法:

 console.log(monthsLocalizedArray('en')); // -> ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] console.log(monthsLocalizedArray('bg')); // -> ["януари", "февруари", "март", "април", "май", "юни", "юли", "август", "септември", "октомври", "ноември", "декември"] 

如果您只需要一个选定的月份(更快):

 var monthLocalizedString = function(month, locale) { return new Date(2010,month).toLocaleString(locale,{month:"long"}); }; 

用法:

 console.log(monthLocalizedString(1, 'en')); // -> February console.log(monthLocalizedString(1, 'bg')); // -> февруари console.log(monthLocalizedString(1, 'de')); // -> Februar 

经过testing,在Chrome和IE 11上运行良好。在Mozilla上需要进行一些修改,因为它会返回整个date。

而不是声明数组,其中包含所有的月份名称,然后指向一个索引,我们也可以写在一个较短的版本如下:

 var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug 

您可以使用几个可用的date格式化程序之一。 由于这属于JavaScript规范,因此它将在浏览器和服务器端模式下都可用。

 objDate.toString().split(" ")[1]; // gives short name, unsure about locale objDate.toLocaleDateString.split(" ")[0]; // gives long name 

例如

 js> objDate = new Date(new Date() - 9876543210) Mon Feb 04 2013 12:37:09 GMT-0800 (PST) js> objDate.toString().split(" ")[1] Feb js> objDate.toLocaleString().split(" ")[0] February 

还有更多在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

不幸的是,提取月份名称的最好方法是从UTCString表示:

 Date.prototype.monthName = function() { return this.toUTCString().split(' ')[2] }; d = new Date(); //=> Thu Mar 06 2014 23:05:21 GMT+0000 (GMT) d.monthName(); //=> 'Mar' 

要获取当前月份而不inputdate,请​​使用以下代码:

 var dateToday = new Date(); var loacle = "en-us"; var month = dateToday.toLocaleString(locale, {month: "long"}); alert(month); 

我的最佳解决scheme如下:

  var dateValue = Date(); var month = dateValue.substring(4,7); var date = dateValue.substring(8,10); var year = dateValue.substring(20,24); var finaldateString = date+"-"+month+"-"+year; 

随着时刻 ,只需使用格式符号。

 const myDate = new Date() const shortMonthName = moment(myDate).format('MMM') // Aug const fullMonthName = moment(myDate).format('MMMM') // August 

将名称存储在数组中,并按月份的索引查找。

 var month=new Array(12); month[0]="January"; month[1]="February"; month[2]="March"; month[3]="April"; month[4]="May"; month[5]="June"; month[6]="July"; month[7]="August"; month[8]="September"; month[9]="October"; month[10]="November"; month[11]="December"; document.write("The current month is " + month[d.getMonth()]); 

JavaScript getMonth()方法

有一个非常有用的date螺栓在这里: http : //code.google.com/p/jqueryjs/source/browse/trunk/plugins/methods/date.js?r=6305这扩展了内置的Date类与方法,如getMonthName()等。

如果你使用jQuery,你可能也使用jQuery UI,这意味着你可以使用$ .datepicker.formatDate() 。

 $.datepicker.setDefaults( $.datepicker.regional[ "nl" ] ); // dutch $.datepicker.formatDate( "dd MM yy", objDate ); 

如果您不想使用外部库,或者存储一个月份名称数组,或者由于浏览器兼容性,ECMAScript国际化API不够好,您可以按照传统的方式从date输出:

 var now = new Date(); var monthAbbrvName = now.toDateString().substring(4, 7); 

这会给你缩写的月份名称,例如十月。我相信date将取决于初始化和您的语言环境各种格式,所以看看什么toDateString()返回并重新计算您的substring()值基于。

我有一个部分的解决scheme,我想出了。 它使用正则expression式来提取月份和date名称。 但是当我查看区域和语言选项(Windows)时,我意识到不同的文化有不同的格式顺序…也许更好的正则expression式模式可能是有用的。

 function testDateInfo() { var months = new Array(); var days = new Array(); var workingDate = new Date(); workingDate.setHours(0, 0, 0, 0); workingDate.setDate(1); var RE = new RegExp("([az]+)","ig"); //-- get day names 0-6 for (var i = 0; i < 7; i++) { var day = workingDate.getDay(); //-- will eventually be in order if (days[day] == undefined) days[day] = workingDate.toLocaleDateString().match(RE)[0]; workingDate.setDate(workingDate.getDate() + 1); } //--get month names 0-11 for (var i = 0; i < 12; i++) { workingDate.setMonth(i); months.push(workingDate.toLocaleDateString().match(RE)[1]); } alert(days.join(",") + " \n\r " + months.join(",")); } 

只是扩展了许多其他优秀的答案 – 如果你使用的是jQuery,你可以做类似的事情

 $.fn.getMonthName = function(date) { var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; return monthNames[date.getMonth()]; }; 

其中date等于var d = new Date(somevalue) 。 per @ nickf说的主要优点是避免使用全局名称空间。

如果你不想使用的时刻,并希望显示月份名称 –

 .config($mdDateLocaleProvider) { $mdDateLocaleProvider.formatDate = function(date) { if(date !== null) { if(date.getMonthName == undefined) { date.getMonthName = function() { var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; return monthNames[this.getMonth()]; } } var day = date.getDate(); var monthIndex = date.getMonth(); var year = date.getFullYear(); return day + ' ' + date.getMonthName() + ' ' + year; } }; } 

如果您使用剑道,也可以这样做。

 kendo.toString(dateobject, "MMMM"); 

这里是来自kendo网站的格式化程序列表:

“d”表示从1到31的月份的一天。

“dd”月的日子,从01点到31点。

“ddd”星期几的缩写名称。

“dddd”星期几的全名。

“f”date和时间值的十分之一秒。

“ff”date和时间值的百分之一秒。

“fff”date和时间值中的毫秒数。

“M”月份,从1到12。

“MM”月,从01到12。

“MMM”月份的缩写名称。

“MMMM”月份的全名。

“h”小时,从1到12使用12小时制。

“hh”使用从12点到12点的12小时时钟。

“H”小时,从1到23使用24小时制。

“HH”使用从01到23的24小时制表示小时。

“m”分钟,从0到59。

“mm”分钟,从00到59。

“秒”第二,从0到59。

“ss”第二个从00到59。

“tt”AM / PM指示符。

“yy”年份值的最后两个字符。

“yyyy”一年的全部价值。

“zzz”使用格式parsingUTCdatestring时的本地时区。

 function getMonthName(month) { return ["January","February","March","April","May","June","July","August","September", "October","November","December"][parseInt(month)-1] } 

获取月份名称的数组:

 Date.monthNames = function( ) { var arrMonth = [], dateRef = new Date(), year = dateRef.getFullYear(); dateRef.setMonth(0); while (year == dateRef.getFullYear()) { /* push le mois en lettre et passe au mois suivant */ arrMonth.push( (dateRef.toLocaleString().split(' '))[2] ); dateRef.setMonth( dateRef.getMonth() + 1); } return arrMonth; } alert(Date.monthNames().toString()); // -> janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novembre,décembre 

http://jsfiddle.net/polinux/qb346/