J'ai deux dates de chaîne au format m/j/aaaa. Par exemple, «11/1/2012», «1/2/2013». J'écris une fonction en JavaScript pour comparer deux dates de chaîne. La signature de ma fonction est bool isLater(string1, string2),
si la date passée par chaîne1 est postérieure à la date passée par chaîne2, elle retournera true, sinon false ./1/2012 ”) devrait retourner vrai. Comment écrire une fonction JavaScript pour cela?
var d1 = Date.parse("2012-11-01");
var d2 = Date.parse("2012-11-04");
if (d1 < d2) {
alert ("Error!");
}
Analyser les dates et les comparer comme vous le feriez:
function isLater(str1, str2)
{
return new Date(str1) > new Date(str2);
}
Si vous devez prendre en charge un autre format de date, considérez une bibliothèque telle que date.js .
Vous pouvez simplement comparer 2 chaînes
function isLater(dateString1, dateString2) {
return dateString1 > dateString2
}
Ensuite
isLater("2012-12-01", "2012-11-01")
retourne vrai tant que
isLater("2012-12-01", "2013-11-01")
retourne faux
Si votre date n'est pas au format standard aaaa-mm-jj (2017-02-06), par exemple 20/06/2016 Vous pouvez utiliser ce code
var parts ='01/07/2016'.val().split('/');
var d1 = Number(parts[2] + parts[1] + parts[0]);
parts ='20/06/2016'.val().split('/');
var d2 = Number(parts[2] + parts[1] + parts[0]);
return d1 > d2
L'analyse directe d'une chaîne de date qui n'est pas au format aaaa-mm-jj, comme dans la réponse acceptée ne fonctionne pas. La réponse de vitran fonctionne, mais JQuery est mélangé, je l'ai donc retravaillée un peu.
// Takes two strings as input, format is dd-mm-yyyy
// returns true if d1 is smaller than or equal to d2
function compareDates(d1, d2){
var parts =d1.split('/');
var d1 = Number(parts[2] + parts[1] + parts[0]);
parts = d2.split('/');
var d2 = Number(parts[2] + parts[1] + parts[0]);
return d1 <= d2;
}
P.S. aurait commenté directement au post de vitran mais je n'ai pas le représentant pour le faire.