【问题标题】:Compare ISO 8601 date strings in javascript比较 javascript 中的 ISO 8601 日期字符串
【发布时间】:2012-11-22 19:49:29
【问题描述】:

我想将 javascript 中的 ISO 8601 日期作为字符串进行比较,而不是为每个字符串创建 Date 对象并比较对象。

var date_array = ['2012-10-01','2012-11-27','2012-12-23'];
console.log(date_array[0] < date_array[1])  // gives true
console.log(date_array[1] > date_array[2])  // gives false

我这样做的原因是我相信字符串比较应该比为每个日期字符串创建对象和比较对象更快。

这些比较似乎在某些浏览器中按预期工作。我可以期望这种 alphabetical lexicographic 字符串比较适用于所有浏览器吗?这种日期比较方法实际上是否比使用 Date 对象更快?

【问题讨论】:

  • 如果格式是大单元 --> 小单元,并且每个字段的所有字符串长度相同(必要时填前导0),那么应该没有问题。跨度>
  • 相关链接:Here 显示使用 Date 构造函数的 ops/sec,here 是字符串比较,here 是 int 比较。
  • 根据wikipedia,ISO 8601 日期的组成部分按字典顺序排列,所以您应该可以执行上述操作

标签: javascript string-comparison


【解决方案1】:

使用该比较运算符将查看字符串值lexicographically,这意味着字典顺序

在 ASCII 中,十进制数字按从最小(00x30)到最大(90x39)的顺序存储。如果它们始终采用这种格式,从最大值(年)到最小值(日)并且总是将0 填充到可能的最大值,那么这些比较就可以了。

【讨论】:

    猜你喜欢
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    相关资源
    最近更新 更多