2010年9月28日火曜日

JavascriptでUNIXタイムスタンプを得る

こちら↓の記事そのまんま。

Get a UNIX timestamp with Javascript

var ts = Math.round(new Date().getTime() / 1000);

new演算子とドット「.」の評価順序を陽に示したい場合は次のように書けばいい。

var ts = Math.round((new Date()).getTime() / 1000);

用途はいろいろあるだろうけど、今回はFlash(SWFファイル)をブラウザにキャッシュさせないために使用。クエリストリングにタイムスタンプを付加して、SWFファイルのURLを毎回変化させる。次のような感じで。

   // このコードは swfobject.js(http://code.google.com/p/swfobject/)に依存しています

   var serial = Math.round(new Date().getTime() / 1000); // タイムスタンプをシリアル番号として利用
   var flashvars = { };
   var params = { allowScriptAccess: 'sameDomain', allowFullScreen: 'false', scale: 'noscale', quality: 'autohigh', wmode: 'transparent', base: '/swf', menu: 'false', salign: 't' };
   var attributes = { id:'movie01', name:'movie01' };
   swfobject.embedSWF("/swf/movie.swf?s=" + serial, "myContent", "600", "300", "9.0.0",  "/swf/expressInstall.swf", flashvars, params, attributes );

もっとトリッキーな方法

Math.roundやMath.floorを使わずに、浮動小数点数から整数への暗黙の型変換(英語もついでに覚えよう:implicit type conversion)で切り捨てを実現することもできる。

補数演算(ビット反転)による切り捨て
var ts = ~~(new Date()/1000);    //~ が補数演算子。2回作用させれば元の値に戻る
論理和演算(OR演算)による切り捨て
var ts = new Date()/1000|0;    //| がOR演算子。ゼロとのORゆえ実質的には型変換のみ行われる

0 件のコメント:

コメントを投稿