【问题标题】:JavaScript - Sort by Time StringJavaScript - 按时间字符串排序
【发布时间】:2015-10-29 16:59:29
【问题描述】:

我不太擅长处理字符串,需要一些帮助。

我有这个函数,它需要 2 个 div 并获取一个段落,该段落包含一个表示时间的字符串,格式如下:

2015 年 8 月 7 日,星期五,晚上 18:21

2015 年 8 月 21 日,星期二,上午 10:45

作为 2 个示例。我想创建一个排序比较器函数,如果一个大于另一个,它将返回正确的数字,但我不确定如何提取数字可以是 1 位或 2 位数字长的天数,并且还要考虑确切的时间等。 .

时间字符串是 innerText 部分,我在其中有一个逗号进行拆分,因此 atime 和 btime 是每个部分的数组。

这是我到目前为止所做的:

// format: Friday, 7 August 2015, 18:21 PM
// atime[0] --> Friday
// atime[1] -->  7 August 2015
// atime[2] -->  18:21 PM

function sortByTimeAdded(a, b) {
    var atime = (a.getElementsByClassName('timeAdded')[0].innerText).split(',');
    var btime = (b.getElementsByClassName('timeAdded')[0].innerText).split(',');

    /*if (atime[1] < btime[1]) {
        return -1;
    }
    if (atime[1] > btime[1]) {
        return 1;
    }*/
    return 0;
}

谢谢!

【问题讨论】:

  • 所以您希望它们按时间顺序排序?
  • 是的,我知道,只是不确定如何以及如何提高效率。
  • innerText 不是标准的,并且不受 Firefox 支持。最好使用textContent
  • 谢谢!我不知道。我最好更改一些旧代码然后:S

标签: javascript sorting time format comparator


【解决方案1】:

我建议使用 Date.parse,我将在示例中展示:

var a = "Friday, 7 August 2015, 18:21 PM"
Date.parse(a.substring(0, a.length-3))

这样你就可以得到时间戳,你可以用它来比较。

如果您需要日期对象,只需将 Date.parse 替换为 Date()

【讨论】:

  • 这绝对可以帮助我入门。感谢您的提示!
  • 另外,如果你对日期字符串执行 new Date(),你会得到一个不错的 js 日期对象。在它上面调用 getTime() ,你会得到 unix 毫秒。将其用于直接 int 比较。
  • 这实际上是完美的。我没有意识到它将所有文本转换为数字,比我能做的任何事情都要高效得多。再次感谢您。
  • 在最后不带 PM 试试
  • 我的意思是,日期的格式确实很糟糕,您不应该同时使用 24 小时格式和 PM。这是一个或另一个。
猜你喜欢
  • 2021-11-06
  • 2022-07-29
  • 1970-01-01
  • 1970-01-01
  • 2014-11-29
  • 2013-03-31
  • 2012-10-03
  • 2019-01-05
  • 1970-01-01
相关资源
最近更新 更多