moment().calendar();
moment().calendar(referenceTime);
moment().calendar(referenceTime, formats); // 从 2.10.5 开始
日历时间显示相对于给定的 referenceTime 的时间(默认为现在),但与 moment#fromNow 略有不同。
moment#calendar 会根据日期与 referenceTime 的日期(默认为今天)的接近程度,使用不同的字符串格式化日期。
| 上个星期 | 上星期一 2:30 |
| 前一天 | 昨天 2:30 |
| 同一天 | 今天 2:30 |
| 下一天 | 明天 2:30 |
| 下个星期 | 星期日 2:30 |
| 其他 | 7/10/2011 |
这些字符串是本地化的,可以自定义。
从 2.10.5 开始,moment 支持指定每次调用的日历输出格式:
moment().calendar(null, {
sameDay: '[今天]',
nextDay: '[明天]',
nextWeek: 'dddd',
lastDay: '[昨天]',
lastWeek: '[上个] dddd',
sameElse: 'DD/MM/YYYY'
});
当 moment 与 referenceTime 相距超过一周时,则将 sameElse 用作格式。
注意:从 2.14.0 版本开始,日历的格式参数可以是一个在 moment 上下文中使用单个参数执行的回调:
moment().calendar(null, {
sameDay: function (now) {
if (this.isBefore(now)) {
return '[今天将会发生]';
} else {
return '[今天已发生]';
}
/* ... */
}
});
moment().calendar();
moment().calendar(referenceTime);
moment().calendar(referenceTime, formats); // from 2.10.5
Calendar time displays time relative to a given referenceTime (defaults to now), but does so slightly differently than moment#fromNow.
moment#calendar will format a date with different strings depending on how close to referenceTime's date (today by default) the date is.
| Last week | Last Monday at 2:30 AM |
| The day before | Yesterday at 2:30 AM |
| The same day | Today at 2:30 AM |
| The next day | Tomorrow at 2:30 AM |
| The next week | Sunday at 2:30 AM |
| Everything else | 7/10/2011 |
These strings are localized, and can be customized.
From 2.10.5 moment supports specifying calendar output formats per invocation:
moment().calendar(null, {
sameDay: '[Today]',
nextDay: '[Tomorrow]',
nextWeek: 'dddd',
lastDay: '[Yesterday]',
lastWeek: '[Last] dddd',
sameElse: 'DD/MM/YYYY'
});
sameElse is used as the format when the moment is more than a week away from the referenceTime
Note: From version 2.14.0 the formats argument to calendar can be a callback that is executed within the moment context with a single argument now:
moment().calendar(null, {
sameDay: function (now) {
if (this.isBefore(now)) {
return '[Will Happen Today]';
} else {
return '[Happened Today]';
}
/* ... */
}
});