在我正在构建的页面上,需要显示日期(例如:8 月 15 日),或者,如果日期是今天,则只显示时间,例如:晚上 10 点。
从 moment.js 中哄骗这种行为的最佳方法是什么?
我想要的日期格式是“d MMM”,时间格式是“hA”(如果分钟为 0)或“h:mmA”(如果分钟不是 0)。
关于如何解决这个问题的任何想法?看起来 calendar() 函数可能能够支持类似的东西?
在我正在构建的页面上,需要显示日期(例如:8 月 15 日),或者,如果日期是今天,则只显示时间,例如:晚上 10 点。
从 moment.js 中哄骗这种行为的最佳方法是什么?
我想要的日期格式是“d MMM”,时间格式是“hA”(如果分钟为 0)或“h:mmA”(如果分钟不是 0)。
关于如何解决这个问题的任何想法?看起来 calendar() 函数可能能够支持类似的东西?
您想使用moment.calendar:设置除d MMMM和h:mmA之外sameDay
的所有内容。你不能做比这更细的颗粒。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();
}
你可以自己写一个微插件来做这件事。
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);
}
快速的 Google 搜索(moment.js 相对时间)提供了该文档的链接。您应该能够使用所需的格式字符串对其进行自定义。