如何在JavaScript中获取从周一到周日的本地化星期缩写名称?
在JavaScript中获取按周一至周日排序的本地化星期缩写名称
你可以利用JavaScript原生的Intl.DateTimeFormatAPI实现需求,这个API支持根据本地化规则处理日期格式,下面提供两种实用方案:
方案一:直接生成周一至周日的日期并格式化
通过构造已知的周一日期,循环生成后续一周的日期并逐个格式化,直接得到按顺序的缩写:
function getMondayFirstWeekdayAbbrs() { // 使用当前环境语言,也可指定具体locale如'en-US'、'zh-CN' const formatter = new Intl.DateTimeFormat(navigator.language, { weekday: 'short' }); const weekdayAbbrs = []; // 2023年1月2日是周一,以此为基准生成一周的日期 for (let dayOffset = 0; dayOffset < 7; dayOffset++) { const date = new Date(2023, 0, 2 + dayOffset); weekdayAbbrs.push(formatter.format(date)); } return weekdayAbbrs; } // 调用示例 const abbrs = getMondayFirstWeekdayAbbrs(); console.log(abbrs); // 中文环境输出:["周一", "周二", "周三", "周四", "周五", "周六", "周日"] // 英文环境输出:["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
方案二:调整默认星期数组的顺序
部分locale下Intl.DateTimeFormat默认返回周日开头的星期数组,你可以先获取完整数组,再调整顺序将周一至前置、周日后置:
function getMondayFirstWeekdayAbbrs() { const formatter = new Intl.DateTimeFormat(navigator.language, { weekday: 'short' }); // 2023年1月1日是周日,生成周日到周六的缩写数组 const fullWeek = Array.from({ length: 7 }, (_, index) => { const date = new Date(2023, 0, 1 + index); return formatter.format(date); }); // 截取周一至周六的部分,再拼接周日 return [...fullWeek.slice(1), fullWeek[0]]; }
两种方案都能精准得到按周一至周日排序的本地化星期缩写,若需要固定特定语言输出,直接将navigator.language替换为目标locale字符串即可。
内容的提问来源于stack exchange,提问作者Matthieu Chavigny
相关产品推荐
相关产品推荐

