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

Node.js中转换12-Oct-2021类格式日期出现moment警告如何解决?

问题原因

Moment 官方出于解析准确性考虑,已经弃用了非 RFC2822/ISO 标准格式的隐式自动解析逻辑,你传入的12-Oct-2021这类自定义格式的字符串没有显式指定解析规则,就会触发该警告。

解决方法

调用 moment 构造函数时,显式传入你输入日期对应的格式字符串即可,你的日期格式日-月份英文缩写-年对应的格式标识符是DD-MMM-YYYY。

修改后代码

const getStartEndWeek = (stringArray) => {
  const d = new Date();
  let year = d.getFullYear()
  let startWeek = stringArray[0] +'-'+ year;
  let endWeek = stringArray[1] +'-'+ year;
  // 显式指定解析格式消除警告
  let startWeekDate = moment(startWeek, 'DD-MMM-YYYY');
  let endWeekDate = moment(endWeek, 'DD-MMM-YYYY');

  // 可选:增加有效性判断,避免返回无效日期
  if (!startWeekDate.isValid() || !endWeekDate.isValid()) {
    throw new Error('日期解析失败,请检查输入格式')
  }

  return [startWeekDate,endWeekDate] 
}
注意事项
  • 如果你使用非英文的月份缩写(比如中文的10月),需要先引入对应 moment 语言包并设置 locale 后再解析,否则会解析失败。
  • 现有代码直接取当前年份拼接的逻辑存在边界问题:如果处理的是跨年的周日期(比如当前是2024年1月,要处理的是2023年12月的周数据),直接拼接当前年会得到错误的日期,可根据业务场景补充跨年逻辑判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:54:03