2009年02月14日 08:31 [Edit]
javascript - 1234567890記念時刻カウンター
というわけで、記念時刻をカウントダウンするスクリプト。
初出2009.02.12; 記念時刻が近づいたので更新;無事終了で再更新バレンタインデーに、UNIX timeが1234567890に : Gizmodo Japan(ギズモード・ジャパン), ガジェット情報満載ブログ
今年のバレンタインデーは、意中の相手からチョコがもらえるかどうかどころじゃないですよ。なんとUNIX timeが「1234567890」になるんです!
ソース
(function(id, when, title){
var div = function(n, d){ return (n - n % d) / d };
var w = window, d = document;
var node = d.getElementById(id);
var interval;
interval = w.setInterval(function(){
var delta = when * 1000 - (new Date()).getTime();
if (delta < 0){
w.clearInterval(interval);
node.innerHTML = title + 'は終了しました。';
return;
}
node.innerHTML = [
title, 'まで、あと',
div(delta, 3600e3), '時間',
div(delta, 60e3) % 60, '分',
div(delta, 1e3) % 60, '秒'
].join('');
}, 500);
})(
'countdown', // DOM id
1234567890, // 記念時刻(秒)
'time() = 1234567890' // タイトル
);
解説
関数に名前付けるのがまんどくさかったので、こんな書き方してます。1000msではなく500msごとに書き換えているのは、秒飛びを防ぐため。見ての通り、今回のイベント以外にも使えるような書き方をしています。記念日を過ぎてもカウントするようなことがないようになってます。
UNIX time が「1234567890」になる - スラッシュドット・ジャパン本家記事より、今週の13日の金曜日、UNIX Time(すなわち、1970年1月1日からの累積秒)が「1234567890」になる。と言っても、正確には「2009年2月13日11:31:30pm」はUTCでの表記であるので、日本時間では14日であることに注意してもらいたい。本家タレコミからリンクされているLinux Pro Magazineで紹介されているように、Perl Script「perl -e 'print scalar localtime(1234567890),"\n";' 」で自分の地方時における時間を知ることができる。
JavaScriptだと、(new Date(1234567890e3)).toString()といったところでしょうか。
Enjoy!
Dan the Man Who was Born Before time(0)
追記:
その瞬間をスナップショットしてくれた方がいらっしゃいます。
ありがとうございました>id:tricksterchaos
Posted by dankogai at 08:31│Comments(6)│TrackBack(2)
この記事へのトラックバックURL
この記事へのトラックバック
全世界300万人(国連推計)のゾロ目・並び目フリークの皆様、ご機嫌麗しゅうございます。本日は当社内非公認コミュニティ「ゾロ目・並び目友の会」から、来たる2009年2月14日(土) 午前8...
1234567890秒に寄せて【Blogo el Ermitejo】at 2009年02月13日 02:15
あと1時間弱で1234567890秒ですね。 移動中なので立ち会えません。残念。...
1234567890【imaismix】at 2009年02月14日 07:45
この記事へのコメント
関数に名前付けるのは、すごーく
まんどくさいですね。
まんどくさいですね。
Posted by たしかに at 2009年02月12日 16:24
ruby -e 'p Time.at(1234567890)'
ですね。
ですね。
Posted by rubyだと at 2009年02月13日 00:38
setIntervalで設定したタイマーってclearTimeoutでクリアできましたっけ?
実質そのコードだと、クリアされなかったとしても「その時」を過ぎたら毎回「終了しました」を書きだすだけだから、見た目上は実質問題ないですけれど。
あと、インターバルを200あたりにすると、時刻の誤差がより少なくなりますし、負荷もそれほどかからない(高々2.5倍)のでオススメです。
実質そのコードだと、クリアされなかったとしても「その時」を過ぎたら毎回「終了しました」を書きだすだけだから、見た目上は実質問題ないですけれど。
あと、インターバルを200あたりにすると、時刻の誤差がより少なくなりますし、負荷もそれほどかからない(高々2.5倍)のでオススメです。
Posted by あんちもん2(通りすがり) at 2009年02月14日 01:22
あんちもん2(通りすがり)さん、
あれ?ほんとだ。
というわけで s/Interval/Timeout/g しました。ありがとうございます。
Dan the Typo Generator
あれ?ほんとだ。
というわけで s/Interval/Timeout/g しました。ありがとうございます。
Dan the Typo Generator
Posted by 弾 at 2009年02月14日 01:47
>>ありがとうございました>id:tricksterchaos
恐縮です。いつも読ませていただいてます。
こちらこそありがとうございます。
恐縮です。いつも読ませていただいてます。
こちらこそありがとうございます。
Posted by tricksterchaos at 2009年02月14日 11:35
あーあ、見逃しちゃった…orz
Posted by U D at 2009年02月14日 17:36