Estou tentando usar momentjs
para verificar se uma determinada data é hoje ou no futuro.
Isto é o que eu tenho até agora:
<script type="text/javascript" src="http://momentjs.com/downloads/moment.min.js"></script>
<script type="text/javascript">
var SpecialToDate = '31/01/2014'; // DD/MM/YYYY
var SpecialTo = moment(SpecialToDate, "DD/MM/YYYY");
if (moment().diff(SpecialTo) > 0) {
alert('date is today or in future');
} else {
alert('date is in the past');
}
</script>
O código está avaliando minha data (31 de janeiro de 2014) como uma data anterior.
Alguma idéia do que estou fazendo de errado?
moment().diff(SpecialToDate)
dará diretamente a diferença em milissegundos.'days'
Não é necessário. Isso funcionará para todos os cenários. SpecialToDate pode ser'2018-10-26 00:00:00'
um exemplo.Você pode usar a
isSame
função:fonte
startTime
? Data objeto não tem umisSame
método ...fonte
Como ninguém parece ter mencionado ainda, a maneira mais simples de verificar se um objeto de data do momento está no passado:
Ou no futuro:
Apenas deixe os argumentos em branco - o padrão será agora.
Há também
isSameOrAfter
eisSameOrBefore
.NB isso fatores no tempo. Se você se importa apenas com o dia, consulte a resposta do Dipendu .
fonte
momentObj
no meu exemplo é uma instância de uma data de momento. Os documentos estão falando especificamente sobre a criação de uma nova instância (hora atual) e, em seguida, verificando se ela está no passado, em uma declaração. Estou não sugerindo que você fazmoment().isBefore()
que é totalmente inútil - por que você iria verificar se agora está no passado (ou futuro)?Você pode usar a
isAfter()
função de consulta do momentjs:Verifique se um momento é depois de outro momento.
Se você deseja limitar a granularidade a uma unidade diferente de milissegundos, passe as unidades como o segundo parâmetro.
http://momentjs.com/docs/#/query/is-after/
fonte
invert é o método de momento antes para verificar se uma data é igual a hoje ou no futuro, como esta:
fonte
Apenas no caso de alguém precisar disso, faça o seguinte:
ou se você deseja uma função:
Onde date é a data que você deseja verificar.
Explicação
moment(0, "HH")
retorna o dia de hoje à meia-noite.date1.diff(date2, "days")
retorna o número de dias entre a data1 e a data2.Atualizar
Desde então, encontrei a função isSame , que acredito ser a função correta para descobrir se uma data é hoje:
fonte
Para verificar se é hoje :
Se compararmos duas datas que também contêm a informação de tempo
isSame
, obviamente falhará.diff
falhará caso as duas datas se estendam no novo dia:Eu acho que a melhor maneira, mesmo que não seja rápida e curta, é a seguinte:
Para verificar se está no futuro :
Conforme sugerido também por outros usuários, o
diff
método funciona.fonte
Se você só precisa saber qual é maior, também pode compará-las diretamente:
Espero que isto ajude!
fonte
se firstDate for o mesmo ou depois (futuro) secondDate return true senão return false. Toda é firstDate = new Date ();
Existe o exemplo isSame, isBefore e isAfter for day compare moment;
fonte
Use o mais simples para verificar a data futura
fonte
E então basta usá-lo alinhar isto:
fonte
Selecione ontem para verificar os últimos dias ou não com a ajuda de
moment().subtract(1, "day");
Referência: - http://momentjs.com/docs/#/manipulating/subtract/
fonte
Se quisermos diferença sem a hora, você pode obter uma data diferente (somente data sem hora) como abaixo, usando o formato do momento.
Como, eu estava enfrentando problemas com a diferença enquanto fazia;
Então, veio com o seguinte;
const dateValidate = moment(moment().format('YYYY-MM-DD')).diff(moment([YOUR SELECTED DATE HERE]).format('YYYY-MM-DD'))
Por favor, sinta-se livre para comentar se há algo para melhorar.
Obrigado,
fonte
Eu queria isso para outra coisa, mas finalmente encontrei um truque que você pode tentar
somedate.calendar(compareDate, { sameDay: '[Today]'})=='Today'
fonte
verifique com o seguinte:
está retornando em segundos ..
Se irá verificar como 2 minutos condição então
fonte
A resposta mais simples será:
Ele verificará com o valor da meia-noite e retornará um resultado preciso. Também funcionará quando a diferença de horário entre duas datas for inferior a 24 horas.
fonte