2012年5月10日木曜日

ASP.NETでDateTimeをJSONに変換したら不思議な文字列になった場合の対処法

ASP.NETでJavaScriptSerializerを使用してDateTimeをJSONに変換すると下記のような嬉しくない形で出力される。

/Date(1329058800000)/

JSONに変換する前にToString("yyyy/MM/dd")でもして文字列にしてしまえば問題ないけれど、毎回そういうことが可能なわけでもないのでJavaScriptでの対処方法を紹介する。
var date = "/Date(1329058800000)/";
alert(convertToDateTime(date));

function convertToDateTime(value) {
    var date = new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
    return date.getFullYear() + '/' + fillZero(date.getMonth() + 1, 2) + '/' + fillZero(date.getDate(), 2);
}
function fillZero(number, width) {
    width -= number.toString().length;
    if (width > 0) {
        return new Array(width + (/\./.test(number) ? 2 : 1)).join('0') + number;
    }
    return number;
}
上記のコードを実行すると2012/02/13と表示されるのが確認できる。

0 件のコメント:

コメントを投稿