You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript修改日期字符串:移除时间并缩写月份

解决日期字符串处理问题:移除时间并缩写月份

我来帮你搞定这个问题!你已经完成了月份缩写的部分,现在只需要加上移除时间的逻辑,再做一点细节优化就能达到目标。

核心思路

  1. 移除时间部分:时间格式主要分两类——带am/pm的数字时间(如10am、4pm),以及特殊时间词(midnight、noon)。可以用正则表达式精准匹配这些内容并移除。
  2. 优化月份替换:把月份数组改成对象,查找替换会更高效,不用循环整个数组。
  3. 清理多余空格:移除时间后可能会留下连续空格,最后统一清理一下。

完整代码实现

var dateExample = '2nd August 9am - 27th September midnight';
function trimDate(date){
    // 第一步:移除所有时间相关内容
    const timeRemoved = date.replace(/\b(\d+(am|pm)|midnight|noon)\b/gi, '');
    
    // 第二步:替换月份为3字符缩写
    const monthMap = {
        'January': 'Jan', 'February': 'Feb', 'March': 'Mar',
        'April': 'Apr', 'May': 'May', 'June': 'Jun',
        'July': 'Jul', 'August': 'Aug', 'September': 'Sep',
        'October': 'Oct', 'November': 'Nov', 'December': 'Dec'
    };
    const monthReplaced = timeRemoved.replace(/\b(January|February|March|April|May|June|July|August|September|October|November|December)\b/gi, match => monthMap[match]);
    
    // 第三步:清理多余的连续空格和首尾空格
    const finalResult = monthReplaced.replace(/\s+/g, ' ').trim();
    
    console.log(finalResult);
    return finalResult;
}
trimDate(dateExample); // 输出:2nd Aug - 27th Sep

代码解释

  • 正则移除时间:/\b(\d+(am|pm)|midnight|noon)\b/gi 中的\b是单词边界,确保不会误匹配其他字符串;gi表示全局匹配且不区分大小写(比如AM、Midnight也能匹配)。
  • 月份对象替换:用对象存储完整月份和缩写的映射,通过正则匹配到完整月份后直接取对应缩写,比循环数组更高效。
  • 清理空格:/\s+/g匹配所有连续空格,替换成单个空格,再用trim()去掉首尾可能的空格,保证结果格式整洁。

测试其他案例

比如测试你的另一个例子:

trimDate('20th June 10am - 5th September 10pm'); // 输出:20th Jun - 5th Sep
trimDate('28th September noon - 4pm'); // 输出:28th Sep - 

如果需要处理第二个案例中右边空的情况(比如-后面没有日期),可以再加个正则移除单独的-或者调整逻辑,不过根据你的需求,当前代码已经满足基本要求啦。

内容的提问来源于stack exchange,提问作者Mika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:06:50