日付:時刻をはっきり表示させる

del.icio.us にポストしたエントリは "1 day ago" とかになってしまって 何年何月何日何時何分何秒 にポストしたのかはっきりわからなくなる。 それをはっきりさせようということで,


// ==UserScript==
// @include http://del.icio.us/*
// ==/UserScript==

(function() {
    var date = document.evaluate(
        './/span[@class="date"]',
        document,
        null,
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
        null
    );  
    for(var i=0,len=date.snapshotLength;i<len;i++) {
        date.snapshotItem(i).innerHTML = date.snapshotItem(i).getAttribute('title').replace(/(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}):\d{2}Z/, "$1 $2");
    }   
})();

ネタ元

ブックマークレット 02 - (ノヴム・オペラヌム)


誰か時間をJSTに変換してくれないかなーとか言つてみたり - worldcup1962

おぉそうだった。日本時間じゃねぇ。
9時間足すだけでいいのかなぁ。

// ==UserScript==
// @include http://del.icio.us/*
// ==/UserScript==

(function() {
    // From "Date Extras Javascript Library" (http://www.xml-blog.com/articles/2005/09/16/date-extras-javascript-library)
    // var HOURS_CF = 3600000;
    // Date.prototype.addMilliseconds = function(ms){
    //  return new Date(new Date().setTime(this.getTime() + (ms)));
    //}
    //Date.prototype.addHours = function(h){
    //  return this.addMilliseconds(h * HOURS_CF);
    //}


    var date=document.evaluate(
        './/span[@class="date"]',
        document,
        null,
        XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
        null
    );
    for(var i=0,len=date.snapshotLength;i<len;i++) {
        date.snapshotItem(i).innerHTML = date.snapshotItem(i).getAttribute('title').replace(
            /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z/,
            function($0, $1, $2, $3, $4, $5, $6) {
                return new Date(Date.UTC($1, $2 - 1, $3, $4, $5, $6));
            }
         );
    }
})();


9時間足す部分は, Date Extras Javascript Library の一部を拝借。


GMTなんちゃらも表示されるけど気にしない

修正 : 今3月じゃねーよ

よくよく考えると, "02" とかの文字列を渡しているわけだがうまいこと処理してくれてる。

修正

"new Date(Date.UTC())" に変更。
nanto_vi さんありがとうございます。 名前間違えてました。すみませんでした。


toLocaleFromat なるものがあるのか。 Opera なので下の自作メソッドを使う。


Firefox の場合 toLocaleFormat() を使って

new Date(Date.UTC($1, $2 - 1, $3, $4, $5, $6)).toLocaleFormat("%D %R")

とすれば,"年月日 時間" となる。