检查"当前时间"是否在2次之间.但也要检查前一天的夜晚

Ali*_*aza 4 javascript time angularjs

我有2次例如:10:00和1:00现在我想检查当前时间...是否在这两次javascript之间.

问题是在这种情况下的关闭时间是第二天所以它在开放时间之前.我怎么能以正确的方式做到这一点由于某种原因我无法解决这个问题.

我发现这可以解决它:

    var start = new Date(2012,6,20,13).getTime();
var now = new Date().getTime();
var end = new Date(2012,6,21,2).getTime();

if( (start < now ) && (now < end )) {
  console.log("opened");
}
else {
 console.log("closed");
}
Run Code Online (Sandbox Code Playgroud)

但是我怎么能用2种字符串格式来做,比如10:00和2:00,因为我没有看到单独放置时间的选项

var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
Run Code Online (Sandbox Code Playgroud)

fst*_*nis 7

您可以使用这样的简单函数将时间转换为自0:00以来的分钟数:

function getMinutes(str) {
    var time = str.split(':');
    return time[0]*60+time[1]*1;
}
Run Code Online (Sandbox Code Playgroud)

还有一个类似的功能,可以将当前时间转换为相同的形式,以便进行比较:

function getMinutesNow() {
    var timeNow = new Date();
    return timeNow.getHours()*60+timeNow.getMinutes();
}
Run Code Online (Sandbox Code Playgroud)

然后转换开启和关闭时间,如果发生关闭时间是在开放时间之前,则添加24小时.

var now = getMinutesNow();
var start = getMinutes('10:00');
var end = getMinutes('2:00');
if (start > end) end += getMinutes('24:00');

if ((now > start) && (now < end)) { // your code here
Run Code Online (Sandbox Code Playgroud)

  • 这不适用于 0 点之后的“现在”,但在开始之前。(关于start&gt;end的特殊情况) (2认同)