104 votes

Comment vérifier si la date de saisie est égale à la date d'aujourd'hui?

J'ai un champ de formulaire avec un identifiant 'date_trans'. Le format de ce champ de date (qui est validé côté serveur) peut être l'un des suivants :

  • dd/mm/yyyy
  • dd-mm-yyyy
  • yyyy-mm-dd
  • yyyy/mm/dd

Cependant, avant de soumettre le formulaire, je voudrais vérifier si le champ date_trans contient une date égale à la date d'aujourd'hui. Il est acceptable que la date saisie soit celle du client (c'est-à-dire qu'elle utilise js), car je vérifie également côté serveur.

Je suis totalement perdu sur la façon de réaliser la comparaison de dates en jQuery ou en Javascript classique. Si cela peut vous aider, j'utilise le jquery datepicker

234voto

James Hill Points 27532

Une simple comparaison de dates en JS pur devrait être suffisante :

// Créer une date à partir de la valeur d'entrée
var inputDate = new Date("11/21/2011");

// Obtenir la date d'aujourd'hui
var todaysDate = new Date();

// appeler setHours pour retirer l'heure de la comparaison
if(inputDate.setHours(0,0,0,0) == todaysDate.setHours(0,0,0,0)) {
    // La date est égale à la date d'aujourd'hui
}

Voici un JSFiddle fonctionnel.

131voto

schellmax Points 1830

Pour la complétude, tiré de cette solution :

Vous pourriez utiliser toDateString :

var aujourd'hui = new Date();
var estAujourdhui = (aujourd'hui.toDateString() == autreDate.toDateString());

aucune dépendance de bibliothèque, et semble plus propre que l'approche 'setHours()' montrée dans une réponse précédente, à mon avis

24voto

Cengkaruk Points 469

Essayez d'utiliser moment.js

moment('dd/mm/yyyy').isSame(Date.now(), 'day');

Vous pouvez remplacer la chaîne 'day' par 'year, month, minute' si vous le souhaitez.

13voto

Phrogz Points 112337
fonction sameDay(d1, d2) {
  retourner d1.getUTCFullYear() == d2.getUTCFullYear() &&
         d1.getUTCMonth() == d2.getUTCMonth() &&
         d1.getUTCDate() == d2.getUTCDate();
}

if (sameDay(new Date(userString), new Date)){
  // ...
}

Utiliser les méthodes UTC* garantit que deux jours équivalents dans différents fuseaux horaires correspondant au même jour global sont identiques. (Pas nécessaire si vous analysez directement les deux dates, mais une bonne chose à penser.)

7voto

Ravi Kant Points 786

Il suffit d'utiliser le code suivant dans votre JavaScript :

if(new Date(hireDate).getTime() > new Date().getTime())
{
//Date greater than today's date 
}

Modifiez la condition selon vos besoins. Voici un lien pour la comparaison comparer en JavaScript

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X