2017-04-06 60 views
0

我想在一天中的特定時間範圍內做一個消息顯示,但是我不能讓它工作,要麼顯示第一個IF或不顯示任何錯誤,似乎無法弄清楚。我究竟做錯了什麼?Javascript時間08:30 - 20:00

var today = new Date(); 
var hour = today.getHours(); 
var minute = today.getMinutes(); 

if(today.getDay() == 4){ 
     if(hour > 8 && minute > 30 || hour < 20){ 
      document.getElementById('test').innerHTML = ('come today till 20:00'); 
     } else if (hour > 20 && hour < 0){ 
      document.getElementById('test').innerHTML = ('Come tomorrow till 20:00'); 
     } else (hour > 0 && hour < 8).document.getElementById('test').innerHTML = ('Come today from 08:00 till 20:00'); 
    } 

想通了感謝幫助傢伙:) 這是如何工作的吧。

 if(today.getDay() == 4){ 
     if((hour === 8 && minute > 30 || hour > 8) && hour < 20){ 
      document.getElementById('test').innerHTML = ('Kom vandaag langs in onze showtuin tot 20:00 uur donderdag'); 
     } else if (hour >= 20 && hour < 24){ 
      document.getElementById('test').innerHTML = ('Kom morgen langs in onze showtuin tot 20:00 uur'); 
     } else{ 
      document.getElementById('test').innerHTML = ('Kom vandaag langs in onze showtuin van 08:00 tot 20:00 donderdag'); 
     } 
    } 
+2

想象一個大於20但小於0的數字。 – Ryan

+0

爲什麼8:30的分鐘? –

+0

即當商店從8到8打開時,它會更容易。 –

回答

2

您可以簡化的條件了一下,從較小的值檢查,以更大的價值,像

if (today.getDay() == 4) { 
    if (hour < 8) { 
     document.getElementById('test').innerHTML = 'Come today from 08:00 till 20:00'; 
    } else if (hour < 20) { 
     document.getElementById('test').innerHTML = 'Come today till 20:00'; 
    } else if (hour < 24) { 
     document.getElementById('test').innerHTML = 'Come tomorrow till 20:00'; 
    } 
} 
+1

'小時> 8 &&分鐘> 30'意味着它會在9:31 - 9:59 + 10:31 - 10:59等工作,你需要'(小時= 8 &&分鐘> = 30小時> 8 )...'。 –

+0

現在我把它做成這樣,如果((小時= 8 &&分鐘> = 30 ||小時> 8)&&小時<20)',它顯示正確的信息,但如果我檢查並更改數字8 o 9它會再次顯示一個錯誤。 –

+0

@RikRook用'小時=== 8'替換'小時= 8'' – barbsan

0

絕對分鐘工作可能會變得simplier:

var today = new Date(); 
var crtminut = ((today/60000).toFixed(0)-today.getTimezoneOffset())%1440; 
var minmin = 8*60+30; 
var minmax = 20*60; 

if (today.getDay() == 4) { 
    if ((minmin <= crtminut) && (crtminut < minmax)) { 
     ... inner period 
    } else { 
     ... outer period 
    } 
} 
+0

@RikRook你認爲我的回答?使用級聯「if」非常昂貴! –

0

if可以使用前面的條件來獲得它的優勢,這意味着如果你正確地對條件進行排序,你可以使它變得非常簡單le:

if (hour >= 20) { 
    //20:00 - 23:59 
} 
else if (hour > 8) { 
    //9:00 - 19:59 
} 
else if (hour == 8 && minute >= 30) { 
    //8:30 - 8:59 
} 
else { 
    //0:00 - 8:29 
} 
+0

'='不等於運算符 – barbsan

+0

@barbsan抱歉,錯字 –