0

编辑:请注意在您的答案中介绍 UTC 时间。由于在客户端做事会导致不同的时区。

在javascript中,我可以得到当前时间、小时和分钟,如下所示:

var currentTime = new Date();
var currentHour = currentTime.getHours();
var currentMinute = currentTime.getMinutes();

现在,只有当当前时间在固定时间间隔内为假时,我才必须执行任务。说有一个fixed time 10:30 AMcurrent time如果, 是或4 hours behind的,用户可以执行某项任务。current time1 hour aheadfixed time

这意味着用户可以在上午 6:30 到上午 11:30 之间执行任务。

我尝试获取当前时间并做

start = fixed_time - 4;
end = fixed_time + 1;
if currentHour< end or currentHour > start{
do some stuff; 
}

但这忽略了分钟,如何处理呢? 否则,我怎么知道当前时间是否在上午 6:30 到上午 11:30 之间?

4

4 回答 4

2
var currentTime = new Date();
var startTime = new Date(2012, 3, 8, 6, 30, 0, 0); //6:30am today
var endTime = new Date(2012, 3, 8, 11, 30, 0, 0); //11:30am today

if ((currentTime.getTime() > startTime.getTime()) && (currentTime.getTime() < endTime.getTime())
{
   //current time is between start and end so do what you need to do
}

如果你需要它更有活力,你可以

var currentTime = new Date();
var startTime = new Date();
startTime.setHours(6);
startTime.setMinutes(30);
var endTime = new Date();
endTime.setHours(11);
endTime.setMinutes(30);

if ((currentTime.getTime() > startTime.getTime()) && (currentTime.getTime() < endTime.getTime())
{
   //current time is between start and end so do what you need to do
}
于 2012-04-08T07:20:01.840 回答
1

您可以相互比较日期。因此,使用当前日期和时间,您可以将其与具有固定时间集的日期进行比较。就像是:

var now    = new Date
   ,lower  = new Date
   ,upper  = new Date;
//determine limits
lower.setHours(6);
lower.setMinutes(30);
upper.setMinutes(30);
upper.setHours(11);
//tests
now = new Date('2012/04/08 22:00');
console.log(now >= lower && now <= upper); //=> false
now = new Date('2012/04/08 07:00');
console.log(now >= lower && now <= upper); //=> true
于 2012-04-08T07:30:16.087 回答
1

您可以使用 getTime() 方法返回自 1970 年 1 月 1 日午夜以来的毫秒数:

currentTime = (new Date()).getTime();

那么您所需要的就是计算您的固定时间和当前时间之间的差异(以毫秒为单位)。4 小时等于 14,400,000 (4*60*60*1000) 毫秒。

于 2012-04-08T07:13:39.043 回答
0
var startTime = '01 AM'; // or var startTime = '01:00 AM';
var endTime   = '09 AM'; // or var startTime = '09:00 AM';

var now       = new Date();

if(now < convert_time(endTime) && now > convert_time(startTime)){
  alert("With in a range");
}else{
 alert("Out of range");
}    


function convert_actual_time(time) {
 if(time.indexOf(" ") != -1){
  split1 = time.split(" ");
  splitTime = split1[0];
  splitZone = split1[1];
 }
 if(splitTime.indexOf(":") != -1){
  split2 = splitTime.split(":");
  setHours  = split2[0];
  setMins   = split2[1];        
 }else{
  setHours  = splitTime;
  setMins   = "00";
}   
 if(splitZone.toLowerCase() == "pm"){   
  setHours = parseInt(setHours)+12; 
 }  
 date = new Date();
 date.setHours(setHours);
 date.setMinutes(setMins);

 return date;
}

尝试使用此代码

于 2016-10-21T22:10:45.563 回答