2012-04-08 20 views
0

EDITに特定の間隔で落ちるかどうかをチェック:あなたの答えにUTCタイミングを導入するために気をつけてください。クライアント側で作業を行うと、異なるタイムゾーンが発生します。 JavaScriptで現在の時刻ではJavaScript

次のように、私は現在の時刻、時間と分を取得することができます:

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

を今私は一定の時間と間隔で偽のみ、現在の時刻場合、タスクを実行する必要があります。 fixed time 10:30 AMがあるとします。ユーザーはcurrent time場合に限っ特定のタスクを実行することができ、4 hours behindcurrent timeまたはfixed time1 hour aheadです。ユーザーは11:30まで6:30からタスクを実行することができることを意味し

は、私は現在の時間を取得し、

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

しかし、これは分を無視するには、どのようにそれの世話をするためにやってみましたか? それ以外の場合、現在の時刻が午前6時半から午前11時30分の間にある場合はどうすればよいでしょうか?

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

次に、あなたが必要とするすべては、ミリ秒単位であなたの固定時間と現在時刻との差を計算することである:真夜中1970年1月1日は、以来、あなたはミリ秒数を返します。getTime()メソッドを使用することができます

答えて

1

。 4時間は14,400,000(4 * 60 * 60 * 1000)ミリ秒に相当します。

+0

で試してみてください。 – whatf

+0

http://www.w3schools.com/jsref/jsref_obj_date.aspに日付オブジェクトメソッドのリストがあります。そこでは、parse()メソッドがdatetime文字列を解析し、それをミリ秒に変換することがわかります。 – Zafer

+3

Http://w3fools.com - 代わりにmdnを使用 – mplungjan

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 
} 
+0

しかし、私も日付をハードコーディングしています。ハードコーディングされる時間と分だけが必要です。 – whatf

+0

更新された回答を参照 – slash197

+0

または、時間の代わりに何時間も使用できます。 – Alexander

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 
+0

上記のコードを別の場所で実行すると、私にとっては壊れてしまうので、UTCタイムゾーンのタイミングだけが必要です。 – whatf

+0

これを解決する方法が不明です。 'setUTCHours/setUTCMinutes'や' getTimezoneOffset'のようにいくつかのUTCメソッドがあります。たぶん私は理解していない:あなたはあなたのタイムゾーンでのみ開始/終了時間にユーザーを制限したいですか? – KooiInc

+0

はい、私はそれらを制限したいです。しかし、標準としてUTCを維持する。変数のために、私は現在のutc時刻を望んでいました。なぜなら、lowerとupperはすでにUTCであるからです。 – whatf

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; 
} 

は、このコード行うにはあまりにも多くのthats

関連する問題