web-dev-qa-db-fra.com

compare la chaîne avec la date d'aujourd'hui en javascript

J'ai une chaîne d'un champ d'entrée que j'utilise pour la date avec un format comme celui-ci 25-02-2013. Maintenant, je veux comparer la chaîne avec la date d'aujourd'hui. Je veux savoir si la chaîne est plus ancienne ou plus récente que la date du jour.

Aucune suggestion?

12
Leon van der Veen
    <script type="text/javascript">

var q = new Date();
var m = q.getMonth()+1;
var d = q.getDay();
var y = q.getFullYear();

var date = new Date(y,m,d);

mydate=new Date('2011-04-11');
console.log(date);
console.log(mydate)

if(date>mydate)
{
    alert("greater");
}
else
{
    alert("smaller")
}


</script>
9
polin

Comparaison de date exacte et résolution du bug de la réponse acceptée

var q = new Date();
var m = q.getMonth();
var d = q.getDay();
var y = q.getFullYear();

var date = new Date(y,m,d);

mydate=new Date('2011-04-11');
console.log(date);
console.log(mydate)

if(date>mydate)
{
    alert("greater");
}
else
{
    alert("smaller")
}
13

Vous pouvez utiliser un simple opérateur de comparaison pour voir si une date est supérieure à une autre:

var today = new Date();
var jun3 = new Date("2016-06-03 0:00:00");

if(today > jun3){
    // True if today is on or after June 3rd 2016
}else{
    // Today is before June 3rd
}

La raison pour laquelle j’ai ajouté 0:00:00 à la deuxième variable est que sans elle, elle sera comparée à l’heure UTC (Greenwich), ce qui peut vous donner des résultats indésirables. Si vous définissez l'heure sur 0, le résultat sera comparable à minuit local.

7
Marquizzo

Utiliser Javascript Date object sera plus facile pour vous. Mais comme l'objet Date ne supporte pas votre format, je pense que vous devez analyser votre chaîne d'entrée (par exemple: 25-02-2013) avec '-' pour obtenir datemonth et year, puis utiliser l'objet Date pour la comparaison.

var x ='23-5-2010';
var a = x.split('-');
 var date = new Date (a[2], a[1] - 1,a[0]);//using a[1]-1 since Date object has month from 0-11
 var Today = new Date();
 if (date > Today)
    alert("great");
 else
    alert("less");
4
999k

Si votre date est entrée au format "25-02-2013", vous pouvez fractionner la chaîne en JJ, MM et AAAA à l'aide de la méthode split ():

var date_string="25-02-2013";

var day  = parseInt(date_string.split("-")[0]);
var month= parseInt(date_string.split("-")[1]);
var year = parseInt(date_string.split("-")[2]);

La fonction parseInt () est utilisée pour transformer la chaîne en entier. Les 3 variables peuvent ensuite être comparées aux propriétés de l'objet Date ().

0
TheTurkey

Les points les plus importants à retenir lors de la comparaison des dates

  • Les deux dates doivent être au même format pour obtenir un résultat précis.
  • Si vous utilisez le format de date/heure et que vous souhaitez uniquement effectuer une comparaison de date, assurez-vous de le convertir au format associé.

Voici le code que j'ai utilisé.

           var dateNotifStr = oRecord.getData("dateNotif");
           var today = new Date();       
           var todayDateFormatted = new Date(today.getFullYear(),today.getMonth(),today.getDate());

           var dateNotif=new Date(dateNotifStr);
           var dateNotifFormatted = new Date(dateNotif.getFullYear(),dateNotif.getMonth(),dateNotif.getDate());

Bien, cela peut être optimisé davantage, mais cela devrait vous donner une idée précise de ce qui est nécessaire pour créer des dates dans un format uniforme.

0
mitpatoliya