如何使用Moment.js正确实现表格截止日期的颜色判断逻辑
解决表格截止日期颜色标记问题
你的问题出在用fromNow()返回的字符串做比较——fromNow()输出的是类似"in 5 days"这种文本,字符串的大小对比逻辑和实际日期差值完全不匹配,自然得不到正确结果。
直接用Moment.js的日期差值计算来实现规则:
正确代码
// 先把截止日期转成Moment实例 const deadline = moment(currentRow["Deadline"]); // 计算当前时间到截止日期的剩余天数(正数表示还没到,负数表示已过期) const daysRemaining = deadline.diff(moment(), 'days'); // 根据天数判断颜色 const textColor = daysRemaining < 0 ? '#999999' // 已过期,灰色 : daysRemaining <= 5 ? '#f50202' // 剩余5天及以内,红色 : '#0d0d0d'; // 其他情况,黑色
逻辑说明
- 用
diff()方法直接计算两个日期的天数差,得到的是数值,对比逻辑准确 - 先判断是否已过期(天数差为负),再判断是否在截止前5天内,最后是正常情况,逻辑清晰不易出错
内容的提问来源于stack exchange,提问作者IndieDev
相关产品推荐
相关产品推荐

