2011-01-27 10 views
1

JavaScriptの関数showbanner()は、営業時間に基づいて画像のsrcを変更するように設計されています。 8:30まで午後5時 - - それは年齢のためによく働いています...Javascript time if文8.30am

function showbanner() { 
    now = new Date(); 
    t = now.getUTCHours(); 
    m = now.getUTCMinutes(); 
    if (t>9 && t<17) document.getElementById('theImg').src="/Img/Open.png"; 
    else document.getElementById('theImg').src="/Img/Closed.png"; 
} 

はしかし、私たちは午前9時から、当社の営業時間を変更しました17:00と私は私の人生は、うまくできませんのために上記のif文で8.30amを表現す​​る方法!

私が行うことができます:

if ((t>8 && t<9 && m>30) && t<17).... 

?????

ありがとうございました!

乾杯、 マット

+0

't> 8 && t <9'はすべての' t'に対してfalseです。 – delnan

+3

ローカル変数を 'var'で宣言するのを忘れないでください** !!! ** – Pointy

+0

おっと!ありがとう、noobは失敗! – Megamatman

答えて

2

あなたは軍事時間形式で時間を格納する変数を作ることができます。

function showbanner() { 
    var now = new Date(); 
    var t = now.getUTCHours(); 
    var m = now.getUTCMinutes(); 
    var mil = 100*t+m; // Military time 
    if (mil >= 830 && mil <= 1700) { // Between 8:30 AM and 5:00 PM 
     document.getElementById('theImg').src="/Img/Open.png"; 
    } else { 
     document.getElementById('theImg').src="/Img/Closed.png"; 
    } 
} 

これにより、今後の変更を簡単に行うことができます。

+0

+1 ...すべての回答がまだあるので、**実際には問題を単純化します**。しかし、私はt/v/mil世代を別の関数、例えば 'getUTCInMilitary'かそれに類するものに移します。これにより、最初のコメントはまったく必要ありません;-) –

+0

ありがとうございます。あなたが言うように、これは本当に問題を単純化しました。 – Megamatman

+0

関連するアプローチは、時間分数を作ることです。例えば、 'h> = 8.5' –

2
function showbanner() { 
    var now = new Date(); 
    var t = now.getUTCHours(); 
    var m = now.getUTCMinutes(); 
    if ((t > 8 || t === 8 && m <= 30) && t < 17) document.getElementById('theImg').src="/Img/Open.png"; 
    else document.getElementById('theImg').src="/Img/Closed.png"; 
} 
+0

+1 "var"コメントとそれをコードに追加します。 – Chandu

0

この(510で秒に8:30変換し(Tの* 60)+ mがより大きいかどうかを確認)してみてください:

function showbanner() { 
    now = new Date(); 
    t = now.getUTCHours(); 
    m = now.getUTCMinutes(); 
    if (((t*60) + m) >510 && t<17) 
     document.getElementById('theImg').src="/Img/Open.png"; 
    else 
     document.getElementById('theImg').src="/Img/Closed.png"; 
} 
+0

-1非常に判読不能なマジックナンバー510では、コード内にコメントを記述しません。 –

+0

@セバスチャン:あなたは私のポストの最初の行を忘れてしまったと思います。8:30から秒に変換するのは510です。 – Chandu

+0

@Cyber​​nate:私のコメントを変更しました。おそらく、受け入れられた答えはサイトに直接コピーされます。そのままコピーされたコード部分では、かなり読めなくなるでしょう。 –