Maison >interface Web >js tutoriel >Comment garantir des comparaisons de dates précises en JavaScript : les fuseaux horaires affectent-ils le résultat ?

Comment garantir des comparaisons de dates précises en JavaScript : les fuseaux horaires affectent-ils le résultat ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-10 13:32:02682parcourir

How to Ensure Accurate Date Comparisons in JavaScript:  Do Time Zones Affect the Outcome?

Surmonter les écarts de date et d'heure : une solution complète pour des comparaisons de dates précises en JavaScript

La tâche de comparer des dates en JavaScript peut être un défi lorsque le temps joue un rôle crucial. Pour résoudre ce problème, les développeurs peuvent recourir à une approche simple : ignorer le temps et se concentrer uniquement sur le composant date. Cependant, pour y parvenir efficacement, il faut une compréhension nuancée des subtilités de l'objet Date.

Comprendre le problème

Un piège courant survient lors de la comparaison de dates à l'aide de l'opérateur supérieur à ( >). Considérez l'extrait de code suivant :

const now = new Date();
const input = $('datum').getValue();
const dateArray = input.split('/');
const userMonth = parseInt(dateArray[1]) - 1;
const userDate = new Date();
userDate.setFullYear(dateArray[2], userMonth, dateArray[0], now.getHours(), now.getMinutes(), now.getSeconds(), now.getMilliseconds());

if (userDate > now) {
  alert(now + '\n' + userDate);
}

Dans ce code, la date utilisateur est construite avec l'heure actuelle, ce qui peut entraîner un faux négatif lorsqu'on la compare à la date actuelle, maintenant. Pour remédier à ce problème, nous devons isoler l'aspect date de la composante heure.

Mettre les heures à zéro

Pour éliminer l'influence du temps, nous utilisons la méthode setHours de l'objet Date. En mettant les heures, les minutes, les secondes et les millisecondes à zéro, nous tronquons effectivement la date à sa forme la plus pure :

date1.setHours(0, 0, 0, 0);

Simplicité comparative

Avec le temps composants annulés, la tâche de comparaison des dates devient considérablement plus simple. Le code suivant le démontre :

date1 = new Date();
date2 = new Date(2011, 8, 20);
date1.setHours(0, 0, 0, 0);

if (date1 > date2) {
  // Logic for dates only
}

Désormais, les dates sont évaluées uniquement en fonction de leur jour, mois et année, garantissant des comparaisons précises sans le facteur de confusion du temps. Cette technique fournit un moyen robuste et fiable de discerner les différences de date en JavaScript.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn