如何在JavaScript中从这个日期对象生成月份的名称(例如:10月/ 10月)?
var objDate = new Date("10/11/2009");
如何在JavaScript中从这个日期对象生成月份的名称(例如:10月/ 10月)?
var objDate = new Date("10/11/2009");
当前回答
只需要编写一个简单的toLocaleString包装器:
函数 LocalDate(locale) { this.locale = locale; } LocalDate.prototype.getMonthName = function(date) { return date.toLocaleString(this.locale,{month:“long”}); }; var objDate = new Date(“10/11/2009”); var localDate = new LocalDate(“en”); console.log(localDate.getMonthName(objDate)); localdate.locale = “ru”; console.log(localDate.getMonthName(objDate)); localdate.locale = “zh”; console.log(localDate.getMonthName(objDate));
其他回答
只需要编写一个简单的toLocaleString包装器:
函数 LocalDate(locale) { this.locale = locale; } LocalDate.prototype.getMonthName = function(date) { return date.toLocaleString(this.locale,{month:“long”}); }; var objDate = new Date(“10/11/2009”); var localDate = new LocalDate(“en”); console.log(localDate.getMonthName(objDate)); localdate.locale = “ru”; console.log(localDate.getMonthName(objDate)); localdate.locale = “zh”; console.log(localDate.getMonthName(objDate));
我衷心推荐moment.js库中的format函数,你可以这样使用它:
moment().format("MMM"); // "Apr" - 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
如果你需要当月的全称,可以用“MMMM”而不是“MMM”
除了一长串其他特性之外,它还具有强大的国际化支持。
现在可以使用ECMAScript国际化API来做到这一点:
const date = new date (2009,10,10);/ / 2009-11-10 Const month =日期。toLocaleString('default', {month: 'long'}); console.log(月);
“long”使用月份的全称,“short”使用简短的名称,“narrow”使用更简洁的版本,比如字母语言中的第一个字母。
你可以将浏览器的“默认”更改为任何你喜欢的语言环境(例如:'en-us'),它将为该语言/国家使用正确的名称。
使用toLocaleStringapi,你每次都必须传递locale和选项。如果你要在多个不同的日期使用相同的语言环境信息和格式选项,你可以使用Intl。DateTimeFormat相反:
const formatter = new Intl。DateTimeFormat('fr', {month: 'short'}); Const month1 =格式化程序。格式(新日期()); Const month2 = formatter。format(new Date(2003,5,12)); Console.log (' ${month1}和${month2} ');//当前月份的法语和“juin”。
有关更多信息,请参阅我关于国际化API的博客文章。
获取月份名称的数组:
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/
较短的版本:
const monthNames = ["January", "February", "March", "April", "May", "June", “七月”,“八月”,“九月”,“十月”,“十一月”,“十二月” ]; const d = new Date(); 文档。write("当前月份是" + monthNames[d.getMonth()]);
注(2019-03-08)-我最初在2009年写的这个答案已经过时了。请参阅David Storey的回答以获得更好的解决方案。