Oi, Abraão! Tudo bem?
Desculpa a demora por um retorno.
De acordo com o que foi relatado, o problema pode estar na comparação das datas usando o Moment.js
e as operações com os objetos Date
.
Sabemos que a função dataEValida
é usada para validar se uma determinada data (data
) é igual ou posterior à data de criação (dataCriacao
). Porém, o código inclui tanto comparações com objetos Date
como com Moment.js
, o que pode levar a resultados inesperados e inconsistências.
Em console.log(new Date(data) >= new Date(dataCriacao)
) há uma comparação direta entre objetos Date
. É importante notar que os objetos Date
incluem informações de data e hora, e quando fazemos uma comparação como essa, estamos comparando as datas e horas exatas. Se houver uma discrepância mínima nas horas, a comparação pode não ser o que esperamos.
Já em moment(data).isSameOrAfter(moment(dataCriacao))
estamos usando o Moment.js
para fazer a comparação, que é uma biblioteca útil para manipulação de datas, mas pode causar confusão quando misturado com objetos Date nativos.
Para resolver o problema e obter resultados consistentes, devemos escolher uma abordagem e ficar com ela. Se optarmos por usar o Moment.js
, é melhor evitar o uso de objetos Date
nativos em suas comparações.
Aqui está uma solução sugerida, usando apenas o Moment.js
:
const moment = require('moment');
this.dataEValida = ({ data, dataCriacao }) => {
const dataMoment = moment(data);
const dataCriacaoMoment = moment(dataCriacao);
console.log(dataMoment.isSameOrAfter(dataCriacaoMoment));
return dataMoment.isSameOrAfter(dataCriacaoMoment);
}
Com essa abordagem, estaremos usando apenas o Moment.js
para todas as manipulações de data, o que deve evitar inconsistências nas comparações.
Outro ponto importante é garantir que o formato das datas esteja correto ao serem passadas como argumentos para a função dataEValida
. Se estivermos recebendo as datas em um formato diferente do padrão do Moment.js
(como ISO 8601), será necessário fornecer o formato correto ao usar a função moment()
. Por exemplo:
const data = '2023-07-05'; // Exemplo de data no formato ISO 8601
const dataCriacao = '2023-07-01'; // Exemplo de data de criação no formato ISO 8601
const isValid = dataEValida({ data: data, dataCriacao: dataCriacao });
console.log(isValid);
Espero ter ajudado na compreensão do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!
Um forte abraço e bons estudos!
Caso este post tenha te ajudado, por favor, marcar como solucionado ✓