アプリ版:「スタンプのみでお礼する」機能のリリースについて

setInterval(next, 1000);

//1:30後の時刻取得
function get_next(){
 nextTime = new Date();
 nextTime.setTime(nextTime.getTime() + 90*60*1000);
}

function next(){
 nowTime = new Date();
 outputTime = nextTime.getTime() - nowTime.getTime();
 getElementById('output').innerHTML = outputTime;
}

これで1時間30分後までの時間差分をミリ秒で取得は出来てるんですが
これを1秒ごとに実行して
これをx時間x分x秒後 という感じに表示させたいのですが何か良い方法はありませんか?

A 回答 (6件)

こんな感じで



<script>
//1:30後の時刻取得
function get_next(){
nextTime = new Date();
nextTime.setTime(nextTime.getTime() + 90*60*1000);
}

function next(){
nowTime = new Date();
outputTime = nextTime.getTime() - nowTime.getTime();
outputTimeStr=parseInt(outputTime / (60*60*1000))+"時間";
outputTimeStr+=parseInt((outputTime % (60*60*1000)) / (60*1000))+"分";
outputTimeStr+=parseInt((outputTime % (60*1000)) / 1000)+"秒";
document.getElementById('output').innerHTML = outputTimeStr;
}
window.onload=function(){
get_next();
setInterval(next, 1000);
}
</script>
<div id="output"></div>
    • good
    • 0

#3です。

みじかいのがすきだとおもうので。
function hoge(a,o) {
var x=60,y=x*x,z=1000,e=document.getElementById(o),t=(new Date).getTime()+a*z,u;
return e?function(){if((u=(t-(new Date).getTime())/z|0)<=0)t+=a*z;
e.firstChild.nodeValue=(u/y|0)+'時間'+((u%y)/x|0)+'分'+(u%x)+'秒'}:null
}
    • good
    • 0

#3です。



>タイムアップ時に一瞬だけ『 -1時間-1分-1秒 』と表示されるかも。

なぁ~にぃ~~~。やっちまったなぁ~~~。

以下修正。

tt = ( t - (new Date).getTime() ) / 1000;

tt = int( ( t - (new Date).getTime() ) / 1000 );
に。


もうしわけない。
    • good
    • 0

#2です。

 以下、無視してください。

タイムアップ時に一瞬だけ『 -1時間-1分-1秒 』と表示されるかも。
input制限知らんかった < おはずかし。
    • good
    • 0

たいむあっぷなしで。

えんどれす?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>

<body>
<div id="a"></div>

<script type="text/javascript">

function hoge ( secondTime, outId ) {
 var e, t, f;
 var int = Math.floor;
 
 if( e = document.getElementById( outId ) ) {
  t = (new Date).getTime() + secondTime * 1000;

  f = function ( ) {
   var h, m, s, tt;

   tt = ( t - (new Date).getTime() ) / 1000;

   if( tt <= 0 )
    t += secondTime * 1000;
   
   h = int( tt / 3600 );
   m = int( (tt % 3600 ) / 60 );
   s = int( tt % 60 );

   e.firstChild.nodeValue = h + '時間' + m + '分' + s + '秒';
  };
  
//  f();
  return f;
 }
 return null;
}

var fuga = hoge( 90 * 60, 'a' );
fuga && setInterval( fuga, 1000 );

</script>
    • good
    • 0

変数はできるだけvarで定義して、グローバルにしないほうがいいかも…



基本的には、得られているミリ秒を1000で割れば秒が求められ、あとは60進法で考えればよろしいかと。

そのままの例は#1様が回答済みなので、タイムアップしたら自動で止まる例
 * 分と秒は常に00の2桁表示、時間は数値に応じて表示。
 * 残り0秒になったら「Time Up!」表示にかわり、自動的に停止します。
 * 仮に値が24時間を越えても25、26・・・で、日数換算はしていません。
  (と言うような値にはならないけれど…)

ご参考までに。
<script type="text/javascript">
window.onload = function() {
var output = '', tmp, deff , i = 0;
var sep = ',秒,分,時間'.split(',');
if (!this.time) this.time = new Date();

deff = new Date() - this.time;
deff = Math.round(90*60 - deff/1000);
if (deff > 0) {
while (i < 2) {
tmp = '0' + (deff % 60), deff = Math.floor(deff / 60);
output = tmp.substr(tmp.length-2) + sep[i++] + output;
}
output = deff + sep[3] + output;
setTimeout(arguments.callee, 500);
} else {
output = 'Time Up!!';
}
document.getElementById('output').innerHTML = output;
}
</script>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!