"2021-05-08" < "2021-05-09"
// true
"2021-05-08" <= "2021-05-08"
// true
"2021-05-08" < "2021-05-07"
// fasle
请问是怎么比较的
"2021-05-08" < "2021-05-09"
// true
"2021-05-08" <= "2021-05-08"
// true
"2021-05-08" < "2021-05-07"
// fasle
请问是怎么比较的
new Date('2021-05-08').valueOf() < new Date('2021-05-07').valueOf()
+'2021-05-08'.split('-').join('') < +'2021-05-07'.split('-').join('')
+'2021-05-08'.replaceAll('-','') < +'2021-05-07'.replaceAll('-','')
比较的时候,从字符串左边开始,依次比较每个字符,直接出现差异、或者其中一个串结束为止。
比如ABC与ACDE比较,第一个字符相同,继续比较第二个字符,由于第二个字符是后面一个串大,所以不再继续比较,结果就是后面个串大。
再如ABC与ABC123比较,比较三个字符后第一个串结束,所以就是后面一个串大。
所以,长度不能直接决定大小,字符串的大小是由左边开始最前面的字符决定的。
本质是字符串比较,从左到右按位比较每个字符串的ascii值,标准的时间字符串有0补位,比如1月份是01,会小于12月,所有这样比较也基本得到正确结果,前提是有一个标准的时间字符串。
从左到右,依次判断,有一个值大,那就是大
如果前面一致,在出现特殊符号的时候,将特殊符号转换成ASCII码
,然后根据ASCII码
的值再来进行比较,如果ASCII码
值大,那就是大。
具体示例:
'1234-1234-1234' > '1234+333234.1234'
// true
'1234-1234-1234' > '1235+333234.1234'
// false
'1234-1234-1234' > '1235-333234-1234'
// false
'1234-1234-1234' > '1234+1234-1234'
// true
'1234-1234-1234' > '1234/1234-1234'
// false
剖析:
'+' 的 ASCII码值是:43
'-' 的 ASCII码值是:45
'/' 的 ASCII码值是:47
具体参照:ASCII码
对照表
27 回答14.9k 阅读
6 回答2.5k 阅读✓ 已解决
8 回答3.8k 阅读✓ 已解决
6 回答1.7k 阅读✓ 已解决
5 回答5.5k 阅读✓ 已解决
6 回答1.4k 阅读
4 回答1.8k 阅读✓ 已解决
最简单的转换成数字不就可以比较了
或者Date 日期转换一下也行 都一样的