JavaScript:
Comparando duas datas

How to:

// Criar duas datas
let data1 = new Date('2023-05-15T00:00:00');
let data2 = new Date('2023-05-20T00:00:00');

// Comparar datas (data1 é antes de data2?)
console.log(data1 < data2); // Saída: true

// Comparar datas (data1 é depois de data2?)
console.log(data1 > data2); // Saída: false

// São exatamente iguais? (mesmo momento no tempo)
console.log(data1.getTime() === data2.getTime()); // Saída: false

Deep Dive

Comparar datas em JavaScript tem sido um tópico importante desde o princípio do desenvolvimento web. Historicamente, bibliotecas como Moment.js eram a solução pra muitos, mas com novas especificações do ECMAScript e melhorias nos browsers, muitos desses recursos são embutidos. Date é um objeto built-in que representa uma única data e hora. Podemos comparar dois objetos Date convertendo-os em timestamps usando getTime(), que retorna o valor numérico correspondente ao tempo daquela data desde 1 de janeiro de 1970 UTC. Esta abordagem evita falsos negativos de comparações diretas, que podem acontecer devido a diferenças nos milissegundos.

Alternativas modernas incluem a nova API Temporal proposta para uma melhor manipulação e formatação de datas em JavaScript, tratando de muitas limitações do objeto Date.

Para detalhes de implementação, é crucial entender o funcionamento do timezone que pode afetar comparações quando não manuseamos devidamente.

See Also