Eu gostaria da moment().fromNow()
funcionalidade, mas quando a data está próxima é muito precisa - ex. Eu não quero mostrar 'em 3 horas', mas 'hoje' - basicamente com uma precisão 'diária'.
Tentei usar a moment().calendar()
função, ela não formata se a diferença de data for maior que 1 dia
javascript
date
momentjs
Ziarno
fonte
fonte
new Date()
para evitar um aviso que a lib continua me dando (veja momentjs.com/docs/#/parsing/now )new Date()
necessário? Achei que tivessemoment()
gerado uma instância de momento usando a data de hoje de qualquer maneiraVocê pode personalizar a maneira como
.fromNow
os.calendar
métodos e exibem as datas usandomoment.updateLocale
. O código a seguir mudará a forma de.calendar
exibição de acordo com a pergunta:Com base na pergunta, parece que o
.calendar
método seria mais apropriado -.fromNow
deseja ter um prefixo / sufixo passado / presente, mas se quiser saber mais, leia a documentação em http://momentjs.com / docs / # / customization / relative-time / .Para usar isso em apenas um lugar em vez de substituir as localidades, passe uma string de sua escolha como o primeiro argumento ao definir o
moment.updateLocale
e, em seguida, invoque o método de calendário usando aquela localidade (por exemplo.moment.updateLocale('yesterday-today').calendar( /* moment() or whatever */ )
)EDIT: Moment ^ 2.12.0 agora tem o
updateLocale
método.updateLocale
elocale
parecem ter a mesma funcionalidade elocale
ainda não estão obsoletos, mas atualizaram a resposta para usar o método mais recente.fonte
Eu uso uma combinação de
add()
eendOf()
com momentofonte
Requisitos:
moment().fromNow()
funcionalidade padrão ."today"
,"yesterday"
,"tomorrow"
, etc.Solução:
NB: a partir da versão 2.14.0, o argumento de formatos para a função de calendário pode ser um retorno de chamada, consulte http://momentjs.com/docs/#/displaying/calendar-time/ .
fonte
Você pode usar isto:
fonte
Tenho solução semelhante, mas permite usar localidades:
fonte
A partir de 2.10.5, o momento suporta a especificação de formatos de saída de calendário por chamada. Para uma documentação mais detalhada, verifique Momento - Calendário .
De 2.14.0, o calendário também pode receber uma chamada de retorno para retornar valores.
fonte
Em Moment.js, o método from () tem a precisão diária que você está procurando:
fonte
from
realmente não tem precisão diária. Por exemplo, se ontem foi há quatro horas e eu escolher um horário que foi há cinco horas, dirá "5 horas atrás" em vez de ontem. Esta solução não tem nada a ver com a precisão defrom
, mas com as datas passadas.Então foi isso que acabei fazendo
fonte
Você pode usar os métodos .add () e .subtract () para obter a data de ontem e amanhã. Em seguida, use o método de formatação para obter apenas a data .formatar ("D / M / A"), D significa Dia, M para Mês, A para Ano. Verificar no Moment Docs
O resultado será:
fonte
Aqui está como faço isso usando o momento :
fonte
fonte