9

私が作成しているページでは、日付(例:8月15日)を表示するか、日付が今日の場合は時刻(例:午後10時)を表示する必要があります。

moment.jsからその振る舞いを引き出す最良の方法は何でしょうか?

日付の形式は「dMMM」で、時間の形式は「hA」(分が0の場合)または「h:mmA」(分が0でない場合)になります。

これにアプローチする方法について何かアイデアはありますか?calendar()関数がそのようなものをサポートできるように見えますか?

4

3 に答える 3

11

moment.calendarを使用したい:d MMMMsameDayh:mmA以外のすべてを設定します。それより細かい粒子を作ることはできません。sameDay

function timeTodayDateElse(date){
    moment.lang('en', {
        'calendar' : {
            'lastDay' : 'D MMMM',
             'sameDay' : 'h:mmA',
            'nextDay' : 'D MMMM',
            'lastWeek' : 'D MMMM',
            'nextWeek' : 'D MMMM',
            'sameElse' : 'D MMMM'
       }
    });

    return moment(date).calendar();
}
于 2012-04-24T04:13:29.407 に答える
8

これを自分で行うためのマイクロプラグインを作成できます。

moment.fn.formatTimeToday = function () {
    var now = moment(),
        format = "d MMM";
    if (this.date() === now.date() && 
        Math.abs(this.diff(now)) < 86400000) {
        // same day of month and less than 24 hours difference
        if (this.minutes() === 0) {
             format = "hA";
        } else {
             format = "h:mmA";
        }
    }
    return this.format(format);
}
于 2012-04-24T22:15:26.573 に答える
1

クイックグーグル検索(moment.js相対時間)は、ドキュメントへのこのリンクを提供します。必要なフォーマット文字列でこれをカスタマイズできるはずです。

于 2012-04-24T03:54:17.613 に答える