使用Day.js计算日期差值返回NaN的问题求助
解决Day.js计算日期差值返回NaN的问题
你的代码返回NaN的核心原因是:Day.js默认无法解析DD/MM/YYYY格式的字符串。
你当前的流程是:把timestamp转成DD/MM/YYYY格式的字符串,再用这个字符串创建Day.js实例——但Day.js默认只支持ISO8601标准格式(比如YYYY-MM-DD)的解析,这一步会生成无效的日期对象,后续调用diff自然返回NaN。
修复方案一(推荐):跳过格式化步骤,直接使用原始timestamp
没必要多此一举格式化后再解析,直接用timestamp创建Day.js实例即可:
const isPeriodLongerThanNinetyDays = (timestamp) => { const dateOfFeedback = dayjs(timestamp); const actualDate = dayjs(); const dateDifference = actualDate.diff(dateOfFeedback, 'day'); return dateDifference; }
修复方案二:必须用格式化字符串时,指定解析格式(需安装插件)
如果业务逻辑要求必须通过DD/MM/YYYY字符串解析,需要先安装Day.js的CustomParseFormat插件,解析时明确传入格式:
// 先导入并扩展插件 import dayjs from 'dayjs'; import customParseFormat from 'dayjs/plugin/customParseFormat'; dayjs.extend(customParseFormat); const isPeriodLongerThanNinetyDays = (timestamp) => { const dateOfFeedbackFormatted = dayjs(timestamp).format('DD/MM/YYYY'); const actualDate = dayjs(); // 解析时指定对应的格式字符串 const dateOfFeedback = dayjs(dateOfFeedbackFormatted, 'DD/MM/YYYY'); const dateDifference = actualDate.diff(dateOfFeedback, 'day'); return dateDifference; }
内容的提问来源于stack exchange,提问作者Mefju
相关产品推荐
相关产品推荐

