【Angular.js】Node用のNicetimeライブラリをAngular用、かつ日本語化してみた。

Nicetimeは時間を渡すと○秒前とか○分前とかに変換してくれるライブラリ。
しかしネット上に転がっているもので日本語のものが無いので、日本語化&Angularのサービス化を

ベースにしたのは下記ライブラリ。というか秒カウントを追加した以外、英語の部分しか変更してない件。

https://github.com/robinduckett/nicetime

coreServices.service('niceTime', function() {
    return function(duration, to) {
        var nicetime = function(duration, to) {
            if (to == null) {
                  return niceify(duration);
              } else if (duration != null && to != null) {
                  var from = duration;
                  var to = to;
                  return niceify(to - from);
              } else if (duration == null && to != null) {
                  var from = new Date().getTime() / 1000;
                  var to = to;
                  return niceify(to - from);
              }
        }
        var niceify = function(duration) {
            var past = false;
            if (duration < 0) {
              past = true;
              duration = Math.abs(duration);
            }
            duration = new Number(duration).toFixed(2);
            
            var durstr = '';
            
            var second = 1,
                minute = second * 60,
                hour = minute * 60,
                day = hour * 24;
            if (duration < minute) {
                durstr = Math.ceil(duration) + '秒';
            } else if (duration < minute * 2) {
                durstr = '1分';
            } else if (duration < hour) {
                durstr = Math.floor(duration / minute) + '分';
            } else if (duration < hour * 2) {
                durstr = '1時間';
            } else if (duration < day) {
                durstr = Math.floor(duration / hour) + '時間';
            } else if (duration < day * 2) {
                durstr = '1日';
            } else if (duration < day * 365) {
                durstr = Math.floor(duration / day) + '日';
            } else {
                durstr = '1年以上';
            }
            
            if (past == true) durstr += '前';
            return durstr;
        }
        return nicetime(duration, to);
    }
});

使い方は下記の通り。
指定した時間からの経過時間を知りたい場合。

// 第1引数にnull、第2引数にターゲット時間の秒数を渡せばOK。
niceTime(null, createdAt.getTime()/1000);

その他の使い方は参考元ライブラリと同様なので、上記の公式リポジトリを参照されたし。