我刚刚发现这段代码运行良好(Chrome,Firefox,Node.js):
"2018-06-02" > "2018-05-10"
<- true
"2018-06-02" > "2020-05-10"
<- false这真的是要这样工作吗?除了将这些格式化字符串转换为单独的日期对象并在之后进行比较之外,我找不到任何关于比较这些格式化字符串的方法。这里发生了什么,字符串是否在内部转换成数字/日期/字符?
这种不正确的说法在某种程度上似乎也有效:
"2018-06-20" > "2018-05-40"
<- true发布于 2019-04-23 17:03:57
这真的是要这样工作吗?
如果字符串是有效日期,则是可以的,但不是特别因为它们是日期。
字符串按字典顺序(松散的字母顺序)从左到右进行比较。由于"0“小于"1","1”小于"2“等,而且由于这些字符串具有最重要的日期部分(年份)第一和最不重要的部分(天数)最后,词典顺序也恰好是日期顺序。
如果字符串是以欧洲DD/MM/YYYY格式,或美国MM/DD/YYYY格式,它将无法工作,因为那些没有最重要的日期部分最重要到最不重要。
"2018-06-20" > "2018-05-40"是正确的,但是将它们作为日期进行比较(使用对第二个日期( 2018-06-09)的合理解释)将是错误的,同样,它们被比较为字符串,一个字符一个字符。完全不进行规范化,也没有指定日期的逻辑.
发布于 2019-04-23 17:04:26
你可以比较任何一种字符串。
"a" < "b"这叫做词典比较。它将从左到右,逐字符,如果字符不同,它将比较字母表中的位置。对于长度与预期相同的数字,它也适用于ISO日期字符串。
有些不起作用的例子:
"19" > "2" // false, "2" is bigger "1"
"12:35 23.4.2019" < "12:34 25.4.2019" // false, "4" is smaller "5"https://stackoverflow.com/questions/55816113
复制相似问题