Javascript 比较日期字符串
我发现这段代码运行得很好(Chrome、Firefox、Node.js):Javascript 比较日期字符串,javascript,date,compare,Javascript,Date,Compare,我发现这段代码运行得很好(Chrome、Firefox、Node.js): “2018-06-02”>“2018-05-10” "2020-05-10" 这真的是为了这样工作吗 如果字符串是有效日期,则可以,但不是特别因为它们是日期 字符串按从左到右的字典顺序(松散地按字母顺序)进行比较。由于“0”小于“1”,并且“1”小于“2”,等等,并且由于这些字符串首先具有最重要的日期部分(年),最后具有最不重要的部分(天),所以字典顺序也恰好是日期顺序 如果字符串采用欧洲DD/MM/YYYY格式,或美国
“2018-06-02”>“2018-05-10”
"2020-05-10"
这真的是为了这样工作吗
如果字符串是有效日期,则可以,但不是特别因为它们是日期
字符串按从左到右的字典顺序(松散地按字母顺序)进行比较。由于“0”小于“1”,并且“1”小于“2”,等等,并且由于这些字符串首先具有最重要的日期部分(年),最后具有最不重要的部分(天),所以字典顺序也恰好是日期顺序
如果字符串采用欧洲DD/MM/YYYY格式,或美国MM/DD/YYYY格式,则不起作用,因为这些字符串的日期部分不是按从最重要到最不重要的顺序排列的
原因是“2018-06-20”>“2018-05-40”
是正确的,但将它们作为日期进行比较,使用第二个日期(日期2018-06-09)的合理解释,将它们作为日期进行比较是错误的,因为它们再次作为字符串进行比较,一个字符接一个字符。没有进行标准化,根本没有特定于日期的逻辑
这真的是为了这样工作吗
如果字符串是有效日期,则可以,但不是特别因为它们是日期
字符串按从左到右的字典顺序(松散地按字母顺序)进行比较。由于“0”小于“1”,并且“1”小于“2”,等等,并且由于这些字符串首先具有最重要的日期部分(年),最后具有最不重要的部分(天),所以字典顺序也恰好是日期顺序
如果字符串采用欧洲DD/MM/YYYY格式,或美国MM/DD/YYYY格式,则不起作用,因为这些字符串的日期部分不是按从最重要到最不重要的顺序排列的
原因是“2018-06-20”>“2018-05-40”是正确的,但将它们作为日期进行比较,使用第二个日期(日期2018-06-09)的合理解释,将它们作为日期进行比较是错误的,因为它们再次作为字符串进行比较,一个字符接一个字符。没有进行标准化,根本没有特定于日期的逻辑。您可以比较任何类型的字符串
"a" < "b"
“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"
“19”>“2”//false,“2”大于“1”
“12:35 23.4.2019”<“12:34 25.4.2019”//false,“4”小于“5”
您可以比较任何类型的字符串
"a" < "b"
“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"
“19”>“2”//false,“2”大于“1”
“12:35 23.4.2019”<“12:34 25.4.2019”//false,“4”小于“5”
这只是逐个字符执行字符串比较。通过这些ISO日期字符串,这将得到解决,但不会检查每个日期的有效性。date(“2018-06-20”)>date(“2018-05-40”)
→ false
这只是逐个字符执行字符串比较。通过这些ISO日期字符串,这将得到解决,但不会检查每个日期的有效性。date(“2018-06-20”)>date(“2018-05-40”)
→ <代码>错误