J'ai deux dates sous forme de chaînes de caractères au format m/j/aaaa. Par exemple, "11/1/2012", "1/2/2013". Je rédige une fonction en JavaScript pour comparer deux dates sous forme de chaînes de caractères. La signature de ma fonction est bool isLater(string1, string2),
si la date passée par string1 est postérieure à la date passée par string2, elle renverra true, sinon false. Ainsi, isLater("1/2/2013", "11/1/2012") devrait retourner true. Comment puis-je écrire une fonction JavaScript pour cela?
Réponses
Trop de publicités?Vous pouvez utiliser "Date.parse()" pour comparer correctement les dates, mais comme dans la plupart des commentaires les gens essaient de diviser la chaîne puis d'ajouter les chiffres et de comparer avec une logique manifestement erronée - pas complètement.
Voici la astuce. Si vous divisez la chaîne, comparez les parties dans un format imbriqué.
Comparez l'année avec l'année, le mois avec le mois et le jour avec le jour.
var parts1 = "26/07/2020".split('/');
var parts2 = "26/07/2020".split('/');
var latest = false;
if (parseInt(parts1[2]) > parseInt(parts2[2])) {
latest = true;
} else if (parseInt(parts1[2]) == parseInt(parts2[2])) {
if (parseInt(parts1[1]) > parseInt(parts2[1])) {
latest = true;
} else if (parseInt(parts1[1]) == parseInt(parts2[1])) {
if (parseInt(parts1[0]) >= parseInt(parts2[0])) {
latest = true;
}
}
}
return latest;
Si votre date n'est pas au format standard yyyy-mm-dd (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
- Réponses précédentes
- Plus de réponses