2009/10/03(Sat)twittime.user.js

はてブ数 2009/10/03 21:43 ソフトウェア つーさ

1時間前っていつよ?

twitter を web から使っていると、「1時間前」などという表記がアバウトすぎて、逆にいらいらするので表示を日時にしてくれるブックマークレット UserJSにした
導入すると、「約3時間前 webで」が「10/03 20:40 [2時間58分前] webで」みたいになります。

Opera10 のみ動作確認。

twittime.user.js
保存されるときは文字コード(UTF-8で!)にお気をつけください。

// ==UserScript==
// @name          Twittime
// @namespace     http://tu3.jp/
// @include       http://twitter.com/*
// ==/UserScript==

function twittimeUpdate() {
    if(window.getSelection().rangeCount > 0) return;
    var entries = document.getElementsByClassName("published timestamp");
    for(var i=0; i<entries.length; i++)
    {
        var nowDate = new Date();
        var pubDate = new Date(entries[i].getAttribute("data").split(/'/)[1]);
        
        var dta = new Array(pubDate.getFullYear(), pubDate.getMonth()+1, pubDate.getDate(), pubDate.getHours(), pubDate.getMinutes(),  pubDate.getSeconds());
        var pDate = (nowDate.getFullYear() != dta[0] ? dta[0]+"/" : "") + dta[1]+"/"+(dta[2]<10?"0":"")+dta[2];
        
        var pTime = dta[3]+":"+(dta[4]<10?"0":"")+dta[4];
        
        var deltaStr;
        var deltaSec = (nowDate.getTime() - pubDate.getTime())/1000;
        var dsa = new Array(Math.floor(deltaSec/86400), Math.floor(deltaSec%86400/3600), Math.floor(deltaSec%3600/60), Math.floor(deltaSec%60));
        if (deltaSec < 60) deltaStr = "" + dsa[3] + "秒前";
        else if(deltaSec < 3600) deltaStr = "" + dsa[2] + "分" + (dsa[3]<10?"0":"")+dsa[3] + "秒前";
        else if(deltaSec < 86400) deltaStr = "" + dsa[1] + "時間" + (dsa[2]<10?"0":"")+dsa[2] + "分前";
        else deltaStr = "" + dsa[0] +"日"+(dsa[1]<10?"0":"")+dsa[1]+"時間前";

        entries[i].innerHTML = pDate + " " + pTime + " ["+deltaStr+"]";
    }
}

setInterval("twittimeUpdate()",1000);