首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较日期字符串

比较日期字符串
EN

Stack Overflow用户
提问于 2019-04-23 17:00:38
回答 2查看 43关注 0票数 0

我刚刚发现这段代码运行良好(Chrome,Firefox,Node.js):

代码语言:javascript
复制
"2018-06-02" > "2018-05-10"
<- true

"2018-06-02" > "2020-05-10"
<- false

这真的是要这样工作吗?除了将这些格式化字符串转换为单独的日期对象并在之后进行比较之外,我找不到任何关于比较这些格式化字符串的方法。这里发生了什么,字符串是否在内部转换成数字/日期/字符?

这种不正确的说法在某种程度上似乎也有效:

代码语言:javascript
复制
"2018-06-20" > "2018-05-40"
<- true
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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)的合理解释)将是错误的,同样,它们被比较为字符串,一个字符一个字符。完全不进行规范化,也没有指定日期的逻辑.

票数 2
EN

Stack Overflow用户

发布于 2019-04-23 17:04:26

你可以比较任何一种字符串。

代码语言:javascript
复制
 "a" < "b"

这叫做词典比较。它将从左到右,逐字符,如果字符不同,它将比较字母表中的位置。对于长度与预期相同的数字,它也适用于ISO日期字符串。

有些不起作用的例子:

代码语言:javascript
复制
 "19" > "2" // false, "2" is bigger "1"
 "12:35 23.4.2019" < "12:34 25.4.2019" // false, "4" is smaller "5"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55816113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档