moment.js - 显示日期或时间

问题描述:

在我正在构建的页面上,需要显示日期(例如:8月15日),或者如果日期是今天,则只需显示时间,例如: 下午10点。moment.js - 显示日期或时间

什么是最好的方式来哄骗这种行为out of moment.js?

我想要约会的格式是'd MMM',时间格式是'hA'(如果分钟是0)或'h:mmA'(如果分钟不是0)。

关于如何解决这个问题的任何想法?它看起来像calendar()函数可能能够支持类似的东西?

你想用moment.calendar:设置一切,除了sameDayd MMMMsameDayH:MMA。你不能做比这更细的粮食。

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(); 
} 
+1

谢谢,那也是我的结论! – Fatal 2012-04-24 04:14:41

+1

呃,实际上,你可以做一个if语句来检查日期是否使用了moment.diff(见http://momentjs.com/docs/#/displaying/difference/),如果它不使用'calendar ',否则使用你的* hA *格式。 – Femi 2012-04-24 04:17:50

+0

那些小写字母应该是大写的D(否则它将显示一周中的某一天而不是一个月)。 – 2014-02-02 21:39:06

快速Google搜索(moment.js相对时间)为this link提供了文档。你应该可以使用你想要的格式字符串进行自定义。

+0

谢谢,相对时间很近,但日历功能更适合我。 – Fatal 2012-04-24 04:13:31

你可以写一个微插件来自己做这个。

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); 
} 
+0

谢谢!此外,谢谢你的时刻,这是真棒:D – captainpete 2012-08-13 13:13:54