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

为何两个相同时间字符串的dayjs()实例用==比较返回false?

问题原因解释

第一个测试返回false的核心原因

dayjs()函数每次调用都会创建一个全新的Day.js对象实例。在JavaScript中,对象类型(包括这类第三方库的实例)使用==或===比较时,判断的是两个对象是否指向内存中的同一个引用,而非它们存储的实际时间值。

哪怕两个Day.js实例的时间内容完全一致,只要是两次调用dayjs()生成的独立实例,它们的内存引用就不相同,因此dayjs(test) == dayjs("2022-12-10T06:51:00Z")会返回false。

第二个测试返回true的原因

test和"2022-12-10T06:51:00Z"都属于字符串原始值。JavaScript中原始值的==比较逻辑是直接对比内容是否完全匹配,这里两个字符串内容完全一致,所以返回true。

正确的Day.js时间比较方式

如果要判断两个Day.js实例的时间是否相等,应该使用库提供的isSame()方法:

const test = "2022-12-10T06:51:00Z"

if (dayjs(test).isSame(dayjs("2022-12-10T06:51:00Z"))){
    console.log('true')
} else {
    console.log('false')
}

这个方法会直接对比两个实例存储的时间值,而非引用,因此能得到预期的true结果。

内容的提问来源于stack exchange,提问作者Trung Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:10:16