0

http://jsbin.com/occeb/6/edit

上記のリンクは完全なコードの場所です。営業が終了するまでの残り時間と分のカウントダウンタイマーを取得しようとしています。

function countDown() {
  var d = new Date();
  var hour = d.getHours();
    if(hour<10){hour="0"+hour;}
      else if(hour>12){hour=hour - 12;}
      var minutes = d.getMinutes();
    if(minutes<10){minutes="0"+minutes;}
      var seconds = d.getSeconds();
    if(seconds<10){seconds="0"+seconds;}
  var open = weekday[day.getDay()].open.replace(/am/g,'');
  var close = weekday[day.getDay()].close.replace(/pm/g,'');
  open = parseInt(open,10);
  close = parseInt(close,10); 
 //confused here!  
   var timeClose = close;
   var timeRemaining = Math.floor(d.getHours() - timeClose);
   document.write('<br><br>Close At: '+timeClose+"pm<br>Time Remaining:"+timeRemaining);
  }

そして、それが私が問題を抱えているところです。開いている時間と閉じている時間を取得できます。もともと私はこれを試しました

 var timeClose = parseInt(close+':00:00',10);
 var difference = Math.floor(d.getDay() - timeClose);

そしてもちろん、これは機能しませんでした。Undefined または NaN のどちらかと言われました。これについてどうすればよいかわかりません。クライアントがこれを求めたにもかかわらず、タイミングはまったく新しいものでした。実際の時間、閉店時間、開店から閉店までの時間 (基本的にはオープン ネオン サイン) 内にある場合、および閉店を過ぎた場合 (クローズ ネオン サイン) の画像を表示する場所...非常に単純ですが、通過するのに非常にトリッキーなコーナーがあります。

4

2 に答える 2

1

JavaScript の時間は 12 時間制ではありません。24時間制で考えます。オブジェクトの配列を反映するように変更します (22 は午後 10 時)。

hours[0]= {open:"8:00:00",close:"22:00:00"};
hours[1]={open:"8:00:00",close:"22:00:00"};
hours[2]={open:"8:00:00",close:"22:00:00"};
hours[3]={open:"8:00:00",close:"22:00:00"};
hours[4]={open:"8:00:00",close:"22:00:00"};
hours[5]={open:"8:00:00",close:"22:00:00"};
hours[6]={open:"8:00:00",close:"22:00:00"};

また、次のように int を解析すると、問題が発生する可能性があります。

var timeClose = parseInt(close+':00:00',10);

substring希望する時間または分を取得するには、コロンの間にすべてを入力する必要があります。

var timeClose = parseInt(open.substring(0,open.indexOf(":")),10);

また、営業時間中 (または午後 10 時より前) に設定した方法では、閉店時間から現在の時間を差し引くため、常に負の数になります。午後 8 時で閉店時間が午後 10 時の場合、残り時間は -2 時間ですか? 代わりに減算するオペランドを切り替えますgetHourstime

var timeRemaining = Math.floor(timeClose - d.getHours());

その後、おそらくtimeRemaining負の値を確認できます。負の場合、それはビジネスが閉鎖されていることを意味し、出力メッセージを変更してそのように反映させることができます。

var timeRemaining = Math.floor(timeClose - d.getHours());
if (timeRemaining < 0) {
    output = "Sorry we are closed already";
} else {
    output = "You have " + timeRemaining + " to come in and shop till you drop";
}
于 2013-06-25T01:14:13.060 に答える
1

これを行うより簡単な方法は、次のようなものになると思います

var now=new Date();
var closing=new Date(now.getFullYear(),now.getMonth(),now.getDate(),21);//Set this to 10:00pm on the present day
var diff=closing-now;//Time difference in milliseconds
if(now.getHours<7){
  //It's before opening time
}
else if(diff<0){
  //It's after closing time
}
else{
  var hours=Math.floor(diff/(1000*60*60));
  diff=diff%(1000*60*60);
  var mins=Math.floor(diff/(1000*60));
  diff=diff%(1000*60);
  var secs=Math.floor(diff/(1000));
}

ここに時間オブジェクトのリファレンスがありますhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

于 2013-06-25T01:20:08.360 に答える