文字列の日付をフォーマット – AngularJS

サーバ側からjsonでdatetime型を文字列で受け取ったりして、それをクライアント側でいい感じのフォーマットに変更する方法です。

AngularJSというより、JavaScriptの一般的なお作法の話かも。

今回は文字列をDate型にパースして、AngularJS上で表示調整します。

単純にやると、これで

// JavaScriptで文字列をパース
Date.parse(date);
// Angularで整形
{{パースしたデータ | date:'yy/MM/dd HH:mm'}}

Chromeではこれで行けたんで安心してたらIEもFireFoxもエラーが起きてた。

あれこれ調べるとこんな情報が→parseメソッド

 元データがCakePHPでdatetimeで保存してて「2014-01-27 18:11:04」みたいな感じだったんだけど、これだとparseダメみたいで。

ついでにnew Dateもしないとダメみたいで。

逆にChromeはなんで正常に動いてたんだろうというぐらい抜けまくりでした。ということで。

// コントローラ内のメソッド
$scope.parseDate = function(d) {
    // ハイフンをスラッシュに全置換
    rep = d.replace( /-/g, "/" );
    // パース!
    date = Date.parse(rep); 
    // newして返す!
    return new Date(date);
}
// HTML側
{{parseDate(post.datetime) | date:'yy/MM/dd HH:mm'}}

 これでIEとFireFoxでも行けました。

こういうの苦戦するのつらい。