React中toDateString日期比较时date1<date2判断失效问题
日期比较结果异常问题解决
你遇到的问题根源在于将Date对象转为字符串后进行比较,字符串比较是按字典序(ASCII码顺序)而非实际时间先后判断的,这就导致不管目标日期是过去还是未来,比较结果都会不符合预期。
比如你给出的两个日期字符串:
Thu, 31 Dec 2022 00:01:00 GMT
Tue, 10 Oct 2023 12:37:33 GMT
按字典序比较时,第二个字符H(来自"Thu")的ASCII码小于U(来自"Tue"),所以"Thu..." < "Tue..."会返回true,即使前者是过去日期、后者是未来日期。
解决方案:直接用Date对象比较
不要将Date转为字符串,直接保留Date对象进行比较——JavaScript会自动将Date对象转换为对应的时间戳(从1970年1月1日至今的毫秒数),从而按实际时间先后判断:
// 保留Date对象,不转字符串 const bltrip = new Date(item.DateTo.toDate()); const todaysdate = new Date();
然后执行判断:
{bltrip < todaysdate ? 'yes' : 'no'}
进阶:仅比较日期(忽略时分秒)
如果需要忽略时分秒,只比较年月日,可以将两个日期的时分秒重置为0:
const bltrip = new Date(item.DateTo.toDate()); bltrip.setHours(0, 0, 0, 0); // 重置时分秒为0 const todaysdate = new Date(); todaysdate.setHours(0, 0, 0, 0);
这样就能确保仅按日期部分进行比较,不会被一天内的时间差异干扰。
内容的提问来源于stack exchange,提问作者Paul VI
相关产品推荐
相关产品推荐

