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

如何移除JavaScript Date()构造函数输出中年份后的时间内容

问题原因

你遇到的核心问题有两个:

  • 最终输出带时间、时区后缀的内容,是因为你返回的是Date构造函数创建的原始实例,而非格式化后的字符串。当你打印Date实例、或对其做隐式字符串转换时,JS会默认调用Date.prototype.toString()方法,该方法的返回值就是你看到的Mon Sep 06 2021 00:00:00 GMT+0100 (British Summer Time)格式。这个现象确实和你使用Date构造函数创建实例有关——你没有对实例做格式化就直接输出了。
  • 现有代码的解析逻辑存在兼容性问题:无参数调用toLocaleDateString()时,返回格式完全跟随用户运行环境的区域设置,并不固定为DD/MM/YYYY,在美式英语环境会返回MM/DD/YYYY、中文环境会返回YYYY/M/D,直接按/拆分取日、月、年的逻辑在非英区环境会直接解析错误。

另外原生JS的英文月份缩写默认是3位,September默认返回Sep,如果你需要Sept的写法,单独做一次替换即可。

修复方案

不需要先转成本地化字符串再拆分重构Date对象,直接在调用日期格式化方法时传入配置项,一步生成目标格式字符串即可,既避免了格式兼容问题,也不会出现多余的时间、时区后缀:

const convertDate = (epoch) => {
  // 指定区域和格式化规则,直接输出目标结构
  const formatted = new Date(epoch * 1).toLocaleDateString('en-GB', {
    weekday: 'short',
    month: 'short',
    day: '2-digit',
    year: 'numeric'
  });
  // 如果需要把默认的Sep替换为Sept,放开下一行注释即可
  // return formatted.replace(/(\w{3}) Sep/, '$1 Sept');
  return formatted;
};

调用上述方法传入对应时间戳,会直接返回Mon Sep 06 2021(替换后返回Mon Sept 06 2021),不存在年份后的多余内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:27:22