2012-04-24 22 views
9

En una página que estoy construyendo, es necesario mostrar la fecha (por ejemplo: 15 ago) o, si la fecha es hoy, simplemente mostrar una hora, por ejemplo : 10 p.m.moment.js - mostrar la fecha O la hora

¿Cuál sería la mejor manera de sacar ese comportamiento de moment.js?

El formato que me gustaría para una fecha es 'd MMM' y el formato del tiempo sería 'hA' (si los minutos son 0) o 'h: mmA' (si los minutos no son 0).

¿Alguna idea sobre cómo abordar esto? Parece que la función calendario() podría ser compatible con algo así.

Respuesta

12

que desea utilizar moment.calendar: set todo excepto sameDay a d MMMM y sameDay a h: MMA. No se puede hacer un grano más fino que eso.

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

¡Gracias, esa fue la conclusión que obtuve también! – Fatal

+1

Bueno, en realidad, podría hacer una declaración if que verifique si la fecha es hoy usando moment.diff (vea http://momentjs.com/docs/#/displaying/difference/) y si no es use 'calendar ', de lo contrario, use su formato * hA *. – Femi

+0

Esas d minúsculas deben ser D mayúsculas (de lo contrario, se mostrará el día de la semana en lugar del mes). –

1

Una búsqueda rápida en Google (moment.js relative time) da this link a la documentación. Debería poder personalizar esto con las cadenas de formato que desee.

+0

Gracias, el tiempo relativo estuvo cerca pero la función de calendario fue más adecuada para mí. – Fatal

8

Puede escribir un microprocesador para hacerlo usted mismo.

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

¡Gracias! Además, gracias por el momento, es increíble: D – captainpete

Cuestiones relacionadas