Me gustaria el moment().fromNow() funcionalidad, pero cuando la fecha está cerca es demasiado precisa, por ejemplo. No quiero que se muestre "en 3 horas" sino "hoy", así que básicamente con una precisión "diaria".
Intenté usar la moment().calendar()función, no se formatea si la diferencia de fecha es más de 1 día
                    
                        javascript
                                date
                                momentjs
                                
                    
                    
                        Ziarno
fuente
                
                
            fuente

new Date()para evitar una advertencia que la biblioteca me sigue dando (ver momentjs.com/docs/#/parsing/now )new Date()requerido? Pensé que semoment()generó una instancia de momento usando la fecha de hoy de todos modosPuede personalizar la forma en que
.fromNowlos.calendarmétodos y los métodos muestran las fechas utilizandomoment.updateLocale. El siguiente código cambiará la forma en que se.calendarmuestra según la pregunta:Según la pregunta, parece que el
.calendarmétodo sería más apropiado:.fromNowquiere tener un prefijo / sufijo pasado / presente, pero si desea obtener más información, puede leer la documentación en http://momentjs.com / docs / # / personalización / tiempo-relativo / .Para usar esto en un solo lugar en lugar de sobrescribir las configuraciones regionales, pase una cadena de su elección como el primer argumento cuando defina
moment.updateLocaley luego invoque el método de calendario usando esa configuración regional (por ejemplomoment.updateLocale('yesterday-today').calendar( /* moment() or whatever */ )) .EDITAR: Momento ^ 2.12.0 ahora tiene el
updateLocalemétodo.updateLocaleylocaleparecen ser funcionalmente iguales, ylocaleaún no están en desuso, pero actualizaron la respuesta para usar el método más nuevo.fuente
Uso una combinación de
add()yendOf()con momentofuente
Requisitos:
moment().fromNow()funcionalidad ."today","yesterday","tomorrow", etc.Solución:
NB: A partir de la versión 2.14.0, el argumento de formatos de la función de calendario puede ser una devolución de llamada, consulte http://momentjs.com/docs/#/displaying/calendar-time/ .
fuente
Puedes usar esto:
fuente
Tengo una solución similar, pero permite usar locales:
fuente
A partir de la 2.10.5, el momento admite la especificación de formatos de salida de calendario por invocación. Para obtener una documentación más detallada, consulte Momento - Calendario .
Desde 2.14.0, el calendario también puede recibir una devolución de llamada para devolver valores.
fuente
En Moment.js, el método from () tiene la precisión diaria que está buscando:
fuente
fromrealmente no tiene precisión diaria. Por ejemplo, si ayer fue hace cuatro horas y elijo una hora que fue hace cinco horas, dirá "hace cinco horas" en lugar de ayer. Esta solución no tiene nada que ver con la precisión defrom, sino con las fechas pasadas.Entonces esto es lo que terminé haciendo
fuente
Puede usar el método .add () y .subtract () para obtener la fecha de ayer y mañana. Luego, use el método de formato para obtener solo la fecha .format ("D / M / Y"), D significa Día, M para Mes, Y para Año. Consultar Moment Docs
El resultado será:
fuente
Así es como lo hago usando el momento :
fuente
fuente