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

使用moment.js设置日期格式报错format is not a function如何解决

错误根因

$fromDate是jQuery包装的DOM元素对象,并非Moment.js的日期实例,本身不具备format方法,因此触发类型错误。

解决方法

你需要先将日期输入框的值转为Moment实例,格式化完成后再把结果回写到输入框中即可,同时注意你期望的日-月份缩写-年格式对应的Moment格式串为DD-MMM-YYYY,不要和你代码中原来写的年在前的格式混淆。

修正后的代码如下:

$fromDate.datepicker().on('change', function () {
    $toDate.datepicker('option', 'minDate', $(this).val());
    $numberDays.val(calculateDateDiff($toDate.val(), $(this).val()));
    // 先转Moment实例再格式化,最后回写输入框
    const formatDate = moment($(this).val()).format('DD-MMM-YYYY');
    $fromDate.val(formatDate);
});

可选优化方案

如果你使用的是jQuery UI Datepicker组件,也可以直接在初始化时指定日期格式,选完日期后自动生成你要的格式,不需要额外调用Moment转换:

$fromDate.datepicker({
  dateFormat: 'd-M-yy'
});

内容的提问来源于stack exchange,提问作者Mr.M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:36:04