Eu descobri isso enquanto trabalhava em um calendário que precisa desativar determinados intervalos de datas. Às vezes está errado por um.
Reproduzir:
moment().isBefore(moment())
false
, mas às vezes mostra true
. Isso não parece acontecer com o método isAfter
. Abaixo está uma captura de tela.Parece que isBefore está se comportando corretamente, mas de alguma forma os dois objetos moment () às vezes são criados com o segundo tendo a data anterior. Esta é a verificação que está retornando resultados díspares:
https://github.com/moment/moment/blob/develop/src/lib/moment/compare.js#L26
Entendo, obrigado por investigar e responder a mim
Acho que depende do milissegundo exato em que os momentos são criados. O fato de o segundo ser criado após o primeiro parece um bug do navegador.
Há uma conversa mais extensa sobre este tópico aqui: https://github.com/moment/moment/issues/2697
O fato de o segundo ser criado após o primeiro parece um bug do navegador.
Parece bom para mim.
Compare moment().isBefore(moment())
com:
somethingThrowingAnError().method(somethingWithSideEffects())
Ou ainda:
somethingReturningNull().method(somethingWithSideEffects())
Você não esperaria ou desejaria que somethingWithSideEffects()
fosse chamado quando um erro fosse lançado / o método possivelmente não pudesse ser chamado.
Tudo isso para dizer: first
_deve_ ser chamado antes de second
:
first().method(second())
@ispacowanguitar algumas vezes os momentos são criados no mesmo milissegundo, outras vezes não. Nada para ver aqui.