Moment: <moment minutes="" ago="">.from(moment())// 1時間前に 'を返します</moment>

作成日 2014年10月07日  ·  4コメント  ·  ソース: moment/moment

素晴らしい図書館をありがとう。

私が遭遇した問題の1つは、from()が45分以上の期間を1時間に丸めることです。 他の単位(秒、日など)も同様に丸められます。 私たちのアプリケーションでは、これよりももう少し正確にしたいと思います。 以下の関数が丸めを行うと思います。 オプションで丸めを削除するための適切な解決策は何でしょうか? ありがとう!

    function relativeTime(milliseconds, withoutSuffix, lang) {
        var seconds = round(Math.abs(milliseconds) / 1000),
            minutes = round(seconds / 60),
            hours = round(minutes / 60),
            days = round(hours / 24),
            years = round(days / 365),
            args = seconds < 45 && ['s', seconds] ||
                minutes === 1 && ['m'] ||
                minutes < 45 && ['mm', minutes] ||
                hours === 1 && ['h'] ||
                hours < 22 && ['hh', hours] ||
                days === 1 && ['d'] ||
                days <= 25 && ['dd', days] ||
                days <= 45 && ['M'] ||
                days < 345 && ['MM', round(days / 30)] ||
                years === 1 && ['y'] || ['yy', years];
        args[2] = withoutSuffix;
        args[3] = milliseconds > 0;
        args[4] = lang;
        return substituteTimeAgo.apply({}, args);
    }

最も参考になるコメント

ドキュメントに示されているように、実際に設定する時間しきい値を設定でき

常にフルタイムで表示したい場合は、しきい値をより正確に設定できます。

// Set thresholds to be at their "max" value
moment.relativeTimeThreshold('s', 59);
moment.relativeTimeThreshold('m', 59);
moment.relativeTimeThreshold('h', 23);
moment.relativeTimeThreshold('d', 28);
moment.relativeTimeThreshold('M', 12);

全てのコメント4件

具体的には、これは問題を説明するために実行できます。

moment().subtract(45, 'minutes').from(moment())

ドキュメントに示されているように、実際に設定する時間しきい値を設定でき

常にフルタイムで表示したい場合は、しきい値をより正確に設定できます。

// Set thresholds to be at their "max" value
moment.relativeTimeThreshold('s', 59);
moment.relativeTimeThreshold('m', 59);
moment.relativeTimeThreshold('h', 23);
moment.relativeTimeThreshold('d', 28);
moment.relativeTimeThreshold('M', 12);

まことにありがとうございます。 75分の期間を「1時間」ではなく「1時間15分」として表示する方法はありますか? 90分間同じ質問->「2時間」。

理想的には、文字列出力に2つの最も重要な連続する単位を表示したいと思います。 いくつかの例:

  • 1時間56分7秒->「1時間56分」
  • 4時間56秒->「4時間」
  • 2日56分->「2日」
  • 2日、1時間、1分->「2日1時間」

この動作はmoment.jsにとって望ましいのでしょうか、それともライブラリのターゲットユースケースから大きく逸脱しているのでしょうか。

これはいわゆる「期間形式」であり、それ自体が非常に複雑なトピックです。 tl; drコアには実装されていないものですが、手動またはプラグインを使用して目的を達成する方法は次のとおりです。 https://github.com/moment/moment/issues/1048を読むか、 //github.com/jsmreese/moment-duration-formatを直接使用してみてください。

このページは役に立ちましたか?
0 / 5 - 0 評価