JavaScript如何从datetime字符串提取月份名和年份输出Jan-2022格式
JS提取指定日期字符串的月年格式方案
你要处理的日期字符串固定为日-3位月份缩写-4位年份 时间 (时区)结构,可通过以下两种方式实现MMM-YYYY格式输出:
方法1:固定格式字符串拆分(生产环境推荐,无兼容性问题)
因为字段格式固定,直接按分隔符截取目标片段即可,完全规避日期解析的时区、浏览器兼容问题:
// 示例源数据 const rawData = { Month: "31-Jan-2022 12:00 AM (EST)" }; // 处理逻辑 const [dateSection] = rawData.Month.split(' '); // 拆分空格取第一段日期主体:"31-Jan-2022" const [, monthAbbr, year] = dateSection.split('-'); // 按横杠拆分取月份、年份段 const formatResult = `${monthAbbr}-${year}`; console.log(formatResult); // 输出:Jan-2022
方法2:调用原生日期API解析提取
如果需要使用JavaScript日期处理函数实现,注意原字符串末尾的括号时区标识会导致部分浏览器解析失败,需要先做清洗再解析:
const rawData = { Month: "31-Jan-2022 12:00 AM (EST)" }; // 清洗掉末尾括号包裹的时区内容 const validDateStr = rawData.Month.replace(/\([A-Z]+\)$/, '').trim(); const dateObj = new Date(validDateStr); // 通过国际化接口取英文月份缩写,避免本地环境语言影响输出 const monthAbbr = new Intl.DateTimeFormat('en-US', { month: 'short' }).format(dateObj); const year = dateObj.getFullYear(); const formatResult = `${monthAbbr}-${year}`; console.log(formatResult); // 输出:Jan-2022
注意:该方法存在兼容性风险,不同JavaScript引擎对非ISO标准日期字符串的解析规则不统一,例如部分低版本Safari会解析失败,非必要不优先使用。
内容的提问来源于stack exchange,提问作者C Sharper
相关产品推荐
相关产品推荐

