例えば15時という時間の制限を決めて
webページ内に「あと○時間○分」というような表示をさせたいです。
当方javascriptは初心者ですので、多少読めるようにはなりましたが書けません。
どのようなコードを記述すれば実装できるでしょうか?
どなたかご教授くださいませ。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
まず、必要な物は何なのかから考えよう。
- 計算
- 出力
これだけなので超簡単だと思うのですが...
もっと細かく考えてみましょう。
- 指定時間
- 現在の時間
- 式
- 出力
これだけですね。
ではやりたい事をどう実装するか、それは上にあるリストの事について調べる事
っで結論から言うと、実装したい機能は基本的に「現在の時間」を取得すれば後は式書くだけなので、
現在の時間取得について調べると、以下のページが見つかる
http://www.pori2.net/js/date/1.html
あとは、現在時間と指定時間の差を計算するだけ。
投稿2015/06/08 01:52
総合スコア228
0
lang
1// 閉店時間を指定 2var closing = 15; 3 4function diffCalculation(){ 5 // 現在の時間を取得 6 var nowDate = new Date(); 7 8 // 現在時刻が閉店時間以降の場合翌営業日の日付を指定 9 if(nowDate.getHours() >= closing){ 10 // getDayで曜日を取得し、休日の前であれば指定日をずらす 11 switch(nowDate.getDay()){ 12 // 金曜日の場合3日ずらす 13 case 5: 14 var targetDate = new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate() + 3,closing,0,0); 15 break; 16 // 土曜日の場合2日ずらす 17 case 6: 18 var targetDate = new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate() + 2,closing,0,0); 19 break; 20 // それ以外の曜日の場合1日ずらす 21 default: 22 var targetDate = new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate() + 1,closing,0,0); 23 break; 24 } 25 }else{ 26 // 現在時刻が閉店時間以前の場合今日の日付を指定 27 var targetDate = new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate(),closing,0,0); 28 }; 29 30 // 1970-01-01 00:00:00からのミリ秒に変換 31 var dnumNow = nowDate.getTime(); 32 var dnumTarget = targetDate.getTime(); 33 34 // 指定時間から現在の時間を引く 35 var diff = dnumTarget - dnumNow; 36 37 // ミリ秒を分解 38 var days = diff / ( 1000 * 60 * 60 * 24 ); // 日数 39 40 diff = diff % ( 1000 * 60 * 60 * 24 ); 41 var hour = diff / ( 1000 * 60 * 60 ); // 時間 42 43 diff = diff % ( 1000 * 60 * 60 ); 44 var min = diff / ( 1000 * 60 ); // 分 45 46 diff = diff % ( 1000 * 60 ); 47 var sec = diff / 1000; // 秒 48 49 // 計算された時差をまとめる 50 if(Math.floor(days) == 0){ 51 var diffmsg = Math.floor(hour) + "時間" + Math.floor(min) + "分" + Math.floor(sec) + "秒"; 52 }else{ 53 var diffmsg = Math.floor(days) + "日と" + Math.floor(hour) + "時間" + Math.floor(min) + "分" + Math.floor(sec) + "秒"; 54 } 55 var msg = "あと" + diffmsg; 56 57 // 出力 58 document.getElementById("Countdown").innerHTML = msg; 59 console.dir(msg); 60} 61setInterval('diffCalculation()',1000); 62
超適当ですが。
getDay()で曜日を取ってswitchで判定しているだけですので、別の曜日が休みの場合そこの数字を変えるだけでおkです。
投稿2015/06/09 13:58
編集2015/06/09 13:58総合スコア830
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/19 02:30
0
どうしても自分で書きたいというのでなければ、
こちらのプラグインがデザインのカスタマイズもし易くて使いやすかったです。
http://yyengine.jp/jquery-yycountdown/
投稿2015/06/08 02:49
総合スコア127
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
すみません、解答そのまま書いちゃう形になるんですけど途中まで書いてしまったので……
promptのエラー処理とか書いてないのでその辺りはご自身でお願いいたします。
lang
1// 時間の入力 2var inputHour = prompt("指定時間", "15"); 3 4function diffCalculation(){ 5 // 現在の時刻を取得 6 var nowDate = new Date(); 7 8 // 入力された時間を元にオブジェクトを生成 9 // 分と秒は0を入れる 10 var targetDate = new Date(nowDate.getFullYear(),nowDate.getMonth() + 1,nowDate.getDate(),inputHour,0,0); 11 12 // 1970-01-01 00:00:00からのミリ秒に変換 13 var dnumNow = nowDate.getTime(); 14 var dnumTarget = targetDate.getTime(); 15 16 // 指定時間から現在の時間を引く 17 var diff = dnumTarget - dnumNow; 18 19 // ミリ秒を分解 20 // ここもうちょっとうまく書けそう 21 diff = diff % ( 1000 * 60 * 60 * 24 ); 22 var hour = diff / ( 1000 * 60 * 60 ); // 時間 23 24 diff = diff % ( 1000 * 60 * 60 ); 25 var min = diff / ( 1000 * 60 ); // 分 26 27 diff = diff % ( 1000 * 60 ); 28 var sec = diff / 1000; // 秒 29 30 // 計算された時差をまとめる 31 var diffmsg = Math.floor(hour) + "時間" + Math.floor(min) + "分" + Math.floor(sec) + "秒"; 32 33 if(dnumTarget > dnumNow){ 34 // まだ期限が来ていない場合 35 var msg = "あと" + diffmsg; 36 }else{ 37 // 期限が過ぎた場合 38 var msg = "もう過ぎたよ。"; 39 } 40 41 // 出力 42 document.getElementById("Countdown").innerHTML = msg; 43} 44setInterval('diffCalculation()',1000);
投稿2015/06/08 02:14
総合スコア830
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/09 08:46
2015/06/09 11:25
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。