【问题标题】:Check whether the time lies between 2 times检查时间是否介于 2 次之间
【发布时间】:2020-01-03 14:06:24
【问题描述】:

应用程序必须根据当天的当前时间显示大门是打开还是关闭的消息。

大门在上午 8:00 至上午 9:30 之前或下午 5:50 之后至晚上 9:00 之前打开,其余时间大门保持关闭。我想根据时间输入显示消息。以下代码输出意外且不正确。

function isValid(date, h1, m1, h2, m2) {
        var h = date.getHours();
        var m = date.getMinutes();
        return (h1 < h || h1 == h && m1 <= m) && (h < h2 || h == h2 && m <= m2);
    }


function a() {
        var current = new Date('2020-01-03 09:31:00');
        if ((isValid(current, 8, 0, 9, 30)) || (isValid(current, 5, 50, 21, 0))) {
            return 'Gate is open'
        } else {
            return 'Please come after 8:00am and before 9:30am OR after 5:50pm and before 9:00pm';
        }
}a();

【问题讨论】:

  • 这能回答你的问题吗? compare timestamps in javascript
  • 没有。我期望的是根据输入时间显示 Gate is open 或 else 消息。此处输入时间为 2020-01-03 09:31:00 必须显示“请来...”
  • 该链接向您展示了如何将当前时间与其他任意时间进行比较,这正是您所要求的。
  • 解析不受支持的字符串格式取决于实现。 new Date('2020-01-03 09:31:00') 在至少一个当前浏览器中返回无效日期,请参阅 Why does Date.parse give incorrect results?

标签: javascript date datetime


【解决方案1】:

您必须在下午日期使用17 而不是5

function isValid(date, h1, m1, h2, m2) {
  var h = date.getHours();
  var m = date.getMinutes();
  return (h1 <= h && m1 <= m) && (h <= h2 && m <= m2);
}


function a() {
  var current = new Date('2020-01-03 09:31:00');
  if ((isValid(current, 8, 0, 9, 30)) || (isValid(current, 17, 50, 21, 0))){
    return 'Gate is open'
  } else {
    return 'Please come after 8:00am and before 9:30am OR after 5:50pm and before 9:00pm';
  }
}

【讨论】:

  • 如何进行时间比较?我期望的是根据输入时间显示 Gate is open 或 else 消息。此处输入时间为 2020-01-03 09:31:00 必须显示“请来...”
【解决方案2】:

您可以简单地将 Date 对象用作 int:

function isValid(date, h1, m1, h2, m2) {
        var h = date.getHours();
        var m = date.getMinutes();

        var d1 = new Date(date);
        d1.setHours(h1);
        d1.setMinutes(m1);

        var d2 = new Date(date);
        d2.setHours(h2);
        d2.setMinutes(m2);

        return (date-d1)*(date-d2) < 0;
    }

【讨论】:

  • 没有。我期望的是根据输入时间显示 Gate is open 或 else 消息。此处输入时间为 2020-01-03 09:31:00 必须显示“请来...”
  • 您可以一次性设置小时和分钟:d1.setHours(h1, m1)。 ;-)
猜你喜欢
  • 2021-06-29
  • 2013-07-15
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 2015-06-16
  • 1970-01-01
相关资源
最近更新 更多