在JavaScript中,我该如何从这个日期对象生成月份的名称(例如:Oct/October)?
var objDate = new Date("10/11/2009");
在JavaScript中,我该如何从这个日期对象生成月份的名称(例如:Oct/October)?
var objDate = new Date("10/11/2009");
当今自然的格式是使用Moment.js。
在Moment.js中,以字符串格式获得月份的方式非常简单,无需在代码中硬编码月份名称: 要以月份名称格式和完整年份(May 2015)获取当前月份和年份:
moment(new Date).format("MMMM YYYY");
let d = new Date(),
t = d.toDateString().split(" ");
console.log(t[2] + " " + t[1] + " " + t[3]);
new Date("10/11/2009").toLocaleString("en-US", { month: "long" })
// 'October'
你可以选择是否将其翻译成本地语言。
const objDate = new Date("10/11/2009");
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
if (objDate !== 'Invalid Date' && !isNaN(objDate)) {
console.log(objDate.getDate() + ' ' + months[objDate.getMonth()] + ' ' + objDate.getFullYear())
}
const convertDate = new Date('10/11/2009')
const lang = 'fr' // de, es, ch
if (convertDate !== 'Invalid Date' && !isNaN(convertDate)) {
console.log(convertDate.getDate() + ' ' + convertDate.toLocaleString(lang, {
month: 'long'
}))
}
对我来说,最好的解决方案是:
对于TypeScript也适用
const env = process.env.REACT_APP_LOCALE || 'en';
const namedMonthsArray = (index?: number): string[] | string => {
const months = [];
for (let month = 0; month <= 11; month++) {
months.push(
new Date(new Date('1970-01-01').setMonth(month))
.toLocaleString(env, {
month: 'long',
})
.toString(),
);
}
if (index) {
return months[index];
}
return months;
};
输出结果为
["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
如果您正在使用kendo,这也是可以完成的。
kendo.toString(dateobject, "MMMM");
也可以按照以下方式完成:
var x = new Date().toString().split(' ')[1]; // "Jul"
如果您不想使用外部库或存储月份名称的数组,或者由于浏览器兼容性而ECMAScript国际化API不够好,那么您总可以采用传统方法通过从日期输出中提取信息来完成:
var now = new Date();
var monthAbbrvName = now.toDateString().substring(4, 7);
这将为您提供缩写的月份名称,例如 Oct。我相信日期格式会根据初始化和您的语言环境而有所不同,因此请查看 toDateString()
返回的内容,并根据此重新计算您的 substring()
值。
const monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
];
const d = new Date();
var dd = String(d.getDate()).padStart(2, '0');
var mm = String(d.getMonth() + 1).padStart(2, '0');
var yyyy = d.getFullYear();
var fullDate = +dd +"-"+ monthNames[d.getMonth()] +"-"+ yyyy;
document.write("The date is : "+ fullDate);
以下是一个函数,你可以输入1到12的数字,然后返回对应月份的全称,例如'January'或者'July'
function getMonthName(monthNumber) {
return new Date('1999-' + monthNumber + '-15').toLocaleString('en-us', { month: 'long' })
}