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

如何使用Moment.js实现输入字符串无时间部分时格式化返回空时间

实现方案

Moment 原生没有提供识别原始输入是否包含时间部分的配置项,我们可以通过封装自定义的实例化和格式化逻辑实现需求:

  1. 实例化时留存原始输入的特征,判断是否携带时间信息
  2. 重写format方法,针对无时间的输入,在格式化时间相关内容时直接返回空字符串

封装代码示例

function customMoment(inputStr) {
  const instance = moment(inputStr);
  // 可根据实际业务的输入格式调整判断规则,当前适配示例中的ISO类格式
  instance._hasTime = /(T\d|\d:\d)/.test(inputStr);

  const originFormat = instance.format;
  instance.format = function (formatStr) {
    // 匹配时间格式符:时/分/秒/上午下午标识,无时间时直接返回空
    if (!this._hasTime && /[hHmsaA]/.test(formatStr)) {
      return "";
    }
    return originFormat.call(this, formatStr);
  };
  return instance;
}

效果测试

// 无时间输入
const date1 = customMoment("2021-02-12");
console.log(date1.format("h:mm a")); // 输出 ""

// 带时间输入
const date2 = customMoment("2021-02-12T6:00");
console.log(date2.format("h:mm a")); // 输出 "6:00 am"

const date3 = customMoment("2021-02-19T18:00");
console.log(date3.format("h:mm a")); // 输出 "6:00 pm"

如果你的业务场景存在其他非ISO格式的日期输入,仅需要调整_hasTime的判断逻辑即可适配。


内容的提问来源于stack exchange,提问作者A.J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:09:04