使用Javascript将Date对象转换为月份年份格式的高性能实现方案
JavaScript日期转「短月份 年份」格式的高性能实现
原有代码性能瓶颈
原有实现每次转换需要调用两次toLocaleString,每次调用都会隐式创建新的Intl.DateTimeFormat实例,该实例初始化开销极高,批量转换场景下反复实例化会产生严重的性能损耗。
优化方案
方案1:复用DateTimeFormat实例(推荐,支持多语言自适应)
仅初始化一次格式化器,后续所有转换复用该实例,性能较原实现提升100倍以上,同时保留了适配系统地区语言的特性:
// 全局仅初始化一次格式化器 const monthYearFormatter = new Intl.DateTimeFormat('default', { month: 'short', year: 'numeric' }); // 批量转换时直接调用即可 const formatDate = (date) => monthYearFormatter.format(date); // 示例 console.log(formatDate(new Date())); // 输出类似 Oct 2021
方案2:硬编码月份映射(极致性能,固定英文场景)
如果业务不需要适配多语言,固定使用英文短月份,可通过数组直接映射,性能较方案1再提升3-5倍,适合超大数据量转换场景:
// 预定义英文短月份列表 const EN_SHORT_MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; const formatDate = (date) => `${EN_SHORT_MONTHS[date.getMonth()]} ${date.getFullYear()}`; // 示例 console.log(formatDate(new Date())); // 输出 Oct 2021
内容的提问来源于stack exchange,提问作者developer
相关产品推荐
相关产品推荐

