0

編集:あなたの答えにUTCタイミングを導入するように注意してください。クライアント側で物事を行うと、異なるタイムゾーンにつながるためです。

javascriptでは、次のように現在の時刻、時間、分を取得できます。

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

今、私は現在の時間が固定時間の間隔で偽の場合にのみタスクを実行する必要があります。あるとしましょうfixed time 10:30 AMcurrent time、が4 hours behindcurrent timeまたは1 hour aheadの場合、ユーザーは特定のタスクを実行できますfixed 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

1970 年 1 月 1 日の午前 0 時からのミリ秒数を返す getTime() メソッドを使用できます。

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 に答える