如何在 JavaScript 中从这个日期对象生成月份的名称(例如:Oct/October)?
var objDate = new Date("10/11/2009");
如何在 JavaScript 中从这个日期对象生成月份的名称(例如:Oct/October)?
var objDate = new Date("10/11/2009");
较短的版本:
const monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
const d = new Date();
document.write("The current month is " + monthNames[d.getMonth()]);
注意(2019-03-08) - 我最初在 2009 年写的这个答案已经过时了。请参阅David Storey 的答案以获得更好的解决方案。
现在可以使用 ECMAScript 国际化 API 来做到这一点:
const date = new Date(2009, 10, 10); // 2009-11-10
const month = date.toLocaleString('default', { month: 'long' });
console.log(month);
'long'
使用月份的全名、'short'
简称,以及'narrow'
更小的版本,例如字母语言中的第一个字母。
您可以将浏览器的区域设置更改为'default'
您喜欢的任何区域设置(例如'en-us'
),它将使用该语言/国家/地区的正确名称。
使用toLocaleString
api,您每次都必须传入语言环境和选项。如果您打算在多个不同日期使用相同的区域设置信息和格式选项,您可以使用Intl.DateTimeFormat
:
const formatter = new Intl.DateTimeFormat('fr', { month: 'short' });
const month1 = formatter.format(new Date());
const month2 = formatter.format(new Date(2003, 5, 12));
console.log(`${month1} and ${month2}`); // current month in French and "juin".
有关更多信息,请参阅我关于国际化 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"
然后这些函数将应用于所有javascript Date 对象。