使用对象`Date()`,如何在小时之间进行比较?

问题描述 投票:1回答:2

我需要比较时间:

var myDate = new Date().getHours();

if (myDate === 07 || myDate === 08) // condition if user's current time is between 7 and 8 AM
{
     // do something
}
else if (myDate == 08 || myDate === 09) // condition if user's current time is between 8 AM and 9 AM
    // and so on...
}

什么是比较优雅的方式来比较每个小时间隔(07-08、08-09等)?

javascript date
2个回答
1
投票
如何改进代码?让我计算一下方式...

  1. 将变量命名为适当的名称。它存储的是当前时间,而不是日期,因此将其命名为myDate是不合适的。
  2. 代码的运行时间不会改变。至少在代码的生存期内,它是const ant。如此指定。

    const currentHour = (new Date()).getHours();

  3. 当时间介于7AM和8AM之间时,小时将等于7。如果等于8,则您已经超过了8AM的时间。因此,对于该小时段,您只关心小时是否恰好是7。
  4. 数字是数字。前导零是无关紧要的,在较老的引擎中,0809会完全失败,因为前导零使它被视为八进制数,不允许8或9。
  5. [当您要比较多个值时,这正是switch的目的。

    switch( currentHour) { case 7: // do something when it is between 07:00:00 and 07:59:59 break; case 8: // do something else when it is between 08:00:00 and 08:59:59 break; }

附加说明,如果您想做一个小时以上的相同操作,则可以这样做。

case 9: case 10: // do the same thing from 09:00:00 to 10:59:59 break;


-1
投票
if([7,8].includes(myDate)) { } else if([8,9].includes(myDate)) { }
这是一种更好的方法,更易于扩展。

-1
投票
if([7,8].includes(myDate)) { } else if([8,9].includes(myDate)) { }
这是一种更好的方法,更易于扩展。
© www.soinside.com 2019 - 2024. All rights reserved.