takaiwa.net

Android、Java、Web系、Linux、マラソン等の備忘録

2013/05/31

JavaScriptのメソッド間にリスナーを設けて独立性を高めるなど

0 件のコメント
JavaScriptの書き方がイマイチわかっていないのですが、考えた事を書き留めておきたいと思いますので、おかしければツッコミをいただければ幸いです。

例えば、こんなHTMLがあったとします。

index.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="navbar.js"></script>
<title></title>
</head>
<body>

    <div id="navbar"></div>

    <div id="content">
        ...
    </div>
</body>
</html>

id:navbarのdivタグはこのページのナビゲーションバーとする部分でありページに対していくつか操作ができるものとします。その内部構造と処理は、navbar.jsに任せるものとします。なぜそうするかと言うと、index.htmlとnavbar.jsの独立性を高めて、見通しをよくするため。ナビゲーションバーで発生した問題は、navbar.jsを見ればよいと考えたわけです。



2013/05/28

ツイート関連のちょっとしたJavaScriptメモ

0 件のコメント
Twitterの情報を取得する簡単なOperaの拡張機能を作ってるところですが、JavaScriptのメモを。

ツイート時刻

JavaScriptでhttps://search.twitter.com/search.json?q=hogehoge (※API1.0) などと叩いてやるとhogehogeの検索結果と共に、
Tue, 28 May 2013 12:04:35 +0000
というようなツイートされた時刻を取得できるわけですが、タイムゾーンが+0000なので、日本時間ではありません。さて、これをどうやって変換してやればよいものか....
と思ってましたが、大して思い悩むほどのことでもありませんでした。

var date = new Date(Date.parse("Tue, 28 May 2013 12:04:35 +0000"));

これで日付オブジェクトになります。あとは、下記を参照しながら煮るなり焼くなり...
・日付(Date)
http://www.tohoho-web.com/js/date.htm
表示に際して、Twitterっぽい表示の時刻にしてみたいと思います。「~時間前」のような相対表記は面倒なので、絶対表記にしつつ、同日の場合は、西暦と月日を省くような。


<script>
function parseTwitterDate(stamp) {
    var str_date = "";
    var twi_time = new Date(Date.parse(stamp));
    var today = new Date();

    if(twi_time.getYear() != today.getYear()) {
        // 年が違えば年月日が必要
        str_date = twi_time.getFullYear() + "/"
                + zerofill(twi_time.getMonth() + 1)
                + "/"
                + zerofill(twi_time.getDate())
                + " ";
    }else if(twi_time.getDate() != today.getDate()) {
        // 日付が異なれば、月日が必要
        str_date += zerofill(twi_time.getMonth() + 1)
                + "/"
                + zerofill(twi_time.getDate())
                + " ";
    }

    var min = twi_time.getMinutes();

    return str_date + twi_time.getHours() + ":" + zerofill(min);
}

function zerofill(value) {
    if(value < 10) {
        value = "0" + value;
    }
    return value;
}
alert(parseTwitterDate("Tue, 28 May 2013 12:04:35 +0000"));
</script>

こんな感じ。
実行すると、執筆時(2013/05/28)では、21:04と表示されます。日付が変れば月日が付き、年が変れば西暦も表示されるようになるはずです。

ついでに、細々としたのを。