質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

4回答

6015閲覧

決めた時間までのタイムリミット表示

YuichiKataoka

総合スコア216

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

2クリップ

投稿2015/06/08 01:37

例えば15時という時間の制限を決めて
webページ内に「あと○時間○分」というような表示をさせたいです。

当方javascriptは初心者ですので、多少読めるようにはなりましたが書けません。
どのようなコードを記述すれば実装できるでしょうか?

どなたかご教授くださいませ。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

まず、必要な物は何なのかから考えよう。

  1. 計算
  2. 出力

これだけなので超簡単だと思うのですが...
もっと細かく考えてみましょう。

  1. 指定時間
  2. 現在の時間
  3. 出力

これだけですね。
ではやりたい事をどう実装するか、それは上にあるリストの事について調べる事

っで結論から言うと、実装したい機能は基本的に「現在の時間」を取得すれば後は式書くだけなので、
現在の時間取得について調べると、以下のページが見つかる

http://www.pori2.net/js/date/1.html

あとは、現在時間と指定時間の差を計算するだけ。

投稿2015/06/08 01:52

fukumi822

総合スコア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
Yasha_Wedyue

総合スコア830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YuichiKataoka

2015/06/10 15:05

ありがとうございます。使ってみます!
YuichiKataoka

2015/07/19 02:30

お世話になります。 先日のscriptですが、以下のようにしているのですが <script> // カウントダウンタイマーscript var closing = 15; // 閉店時間を指定 function diffCalculation(){ // 現在の時間を取得 var nowDate = new Date(); // 現在時刻が閉店時間以降の場合翌営業日の日付を指定 if(nowDate.getHours() >= closing){ // getDayで曜日を取得し、休日の前であれば指定日をずらす switch(nowDate.getDay()){ // 土曜日の場合2日ずらす case 6: var targetDate = new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate() + 2,closing,0,0); break; // それ以外の曜日の場合1日ずらす default: var targetDate = new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate() + 3,closing,0,0); break; } }else{ // 現在時刻が閉店時間以前の場合今日の日付を指定 var targetDate = new Date(nowDate.getFullYear(),nowDate.getMonth(),nowDate.getDate(),closing,0,0); }; // 1970-01-01 00:00:00からのミリ秒に変換 var dnumNow = nowDate.getTime(); var dnumTarget = targetDate.getTime(); // 指定時間から現在の時間を引く var diff = dnumTarget - dnumNow; // ミリ秒を分解 var days = diff / ( 1000 * 60 * 60 * 24 ); // 日数 diff = diff % ( 1000 * 60 * 60 * 24 ); var hour = diff / ( 1000 * 60 * 60 ); // 時間 diff = diff % ( 1000 * 60 * 60 ); var min = diff / ( 1000 * 60 ); // 分 diff = diff % ( 1000 * 60 ); var sec = diff / 1000; // 秒 // 計算された時差をまとめる if(Math.floor(days) == 0){ var diffmsg = Math.floor(hour) + "時間" + Math.floor(min) + "分" + Math.floor(sec) + "秒"; }else{ var diffmsg = Math.floor(days) + "日と" + Math.floor(hour) + "時間" + Math.floor(min) + "分" + Math.floor(sec) + "秒"; } var msg = "あと" + diffmsg; // 出力 document.getElementById("Countdown").innerHTML = msg; console.dir(msg); } setInterval('diffCalculation()',1000); </script> 「現在時刻が閉店時間以前の場合今日の日付を指定」の部分なのですが 例えば今日日曜日だと、残りの時間は「本日の残り15時までの時間 + 24時間」としたいのですが、出来ません。(今日の15時までの時間が表示されてしまいます) 教えて頂けましたら幸いです。 よろしくお願い致します。
guest

0

どうしても自分で書きたいというのでなければ、
こちらのプラグインがデザインのカスタマイズもし易くて使いやすかったです。
http://yyengine.jp/jquery-yycountdown/

投稿2015/06/08 02:49

ina

総合スコア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

Yasha_Wedyue

総合スコア830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YuichiKataoka

2015/06/09 08:46

確認が遅れてしまい、返事が遅くなってしまい申し訳ありませんでした。 こちらのプログラムが分かりやすいので、これをカスタマイズして使わせて頂きます。 ありがとうございました。
YuichiKataoka

2015/06/09 11:25

回答頂いた後ですみません、当方ECサイトに設置しようと思うのですが 日曜日や、祝日の場合に翌営業日の15時までのタイムリミットを表示したいのですが、このような場合はどうしたら良いでしょうか? 例:土曜日の15時過ぎには、翌日15時まででは無く「(翌営業日)月曜日の15時までの時間を表示する」としたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問