使用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
相关产品推荐
相关产品推荐

