在比较

时间:2016-01-17 22:01:21

标签: javascript jquery date

我的代码包含军事格式的时间。

<div class="em" data-time="17:30">

我将该时间与当前时间进行比较,以确定是否已经过了设定的时间。

var curDate = new Date(),
    curTime = curDate.getTime(),
    givenTm = $(this).find('.em').attr('data-time'),
    givenMs = Date.parse(curDate.toDateString() + ' ' + givenTm);

if (curTime > givenMs) {
   // time has passed
}

我需要修改我的代码以检查数据属性中的时间,而不是在给定时间后一小时。此外,我的给定时间只能在同一天,而不是晚于23:30,这意味着我只关心给定的时间是否晚于23:00。

如何将所有这些放在一起?

2 个答案:

答案 0 :(得分:0)

要按小时调整,只需在毫秒(60 * 60 * 1000)中添加一小时进行比较。要忽略2300之后的任何给定时间,您需要在条件中添加另一个子句。所以这样的事情可能会这样做:

if (new Date(givenMs).getHours() < 23
    && curTime > givenMs + 3600000) {
    // time has passed
}

希望这有帮助。

答案 1 :(得分:0)

尝试使用.toJSONString.prototype.replace()String.prototype.slice()

&#13;
&#13;
$("div").click(function() {
  var curDate = new Date(),
    curTime = curDate.toJSON(),
    givenTm = $(this).find(".em").attr("data-time")
    .replace(/(\d+)(?=:)/, function(match) {
      return Number(match) + 1
    }),
    curr = curTime.slice(11, -8).replace(":", ""),
    given = givenTm.replace(":", "");   

  if (curr < 2330 && given < 2330) {
    // time has passed
    console.log("currTime:", curr, "givenTime:", given,
      "time has not passed")
  } else {
    console.log("time has passed")
  }
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div>click
  <div class="em" data-time="17:30">
  </div>
&#13;
&#13;
&#13;