【问题标题】:How does JavaScript compare Date strings?JavaScript 如何比较日期字符串?
【发布时间】:2019-03-14 17:06:30
【问题描述】:

比较两个字符串时,像这样:

'03-15-2019' < '03-16-2019'

我得到了true 的值,这是我所期望的。

不过,我很想进一步了解它的工作原理。这是在比较两个日期,还是在进行其他一些我不太明白的比较?

【问题讨论】:

  • 字符串比较
  • 它只是比较字符串,而不是日期。将第二个日期的年份更改为 2015 年。比较结果将是相同的。
  • 纯字符串比较。 '5'.charCodeAt() 低于 '6'.charCodeAt()
  • 就 JavaScript 而言,那些不是日期字符串,只是一堆字母数字字符,所以没有任何“类型强制”的机会,这是你的正确名称建议。
  • 强制 XKCD:xkcd.com/1179

标签: javascript date string-comparison


【解决方案1】:

字符串比较逐个字符进行

console.log('aaaa' < 'b')
console.log('aa' < 'ab')
console.log('ab' < 'aa')

'03-15-2019' &lt; '03-16-2019'这只是字符串比较不是日期比较,如果你想比较日期你需要把它改成日期对象然后比较

console.log(new Date('03/15/2019') &lt; new Date('03/16/2019'))

【讨论】:

    【解决方案2】:

    日期字符串只是字符串,因此它们遵守 javascript 字符串比较规则。

    console.log('04-13-2019' < '04-15-2019') #true
    

    但是这里要小心,因为如果你依赖这个比较,因为如果两个字符串的长度不同,就会导致像这样的意外行为:

    console.log('ab' < 'b') #true
    

    如果要比较日期,最好依赖Date对象或使用moment js

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 2012-10-19
      相关资源
      最近更新 更多