Je dois calculer si quelqu'un a plus de 18 ans à partir de sa date de naissance en utilisant JQuery.
var curr = new Date();
curr.setFullYear(curr.getFullYear() - 18);
var dob = Date.parse($(this).text());
if((curr-dob)<0)
{
$(this).text("Under 18");
}
else
{
$(this).text(" Over 18");
}
Il doit exister des fonctions plus faciles à utiliser pour comparer les dates plutôt que d'utiliser les méthodes setFullYear et getFullYear.
Remarque: la raison pour laquelle je souhaite trouver une nouvelle méthode est la longueur du code. Je dois insérer ce code dans un champ de base de données limité à 250 caractères. Changer la base de données n'est pas quelque chose qui peut arriver rapidement ou facilement.
Vous pourriez trouver l’open source Datejs library utile. Spécifiquement, la addYears
.
var dob = Date.parse($(this).text());
if (dob.addYears(18) < Date.today())
{
$(this).text("Under 18");
}
else
{
$(this).text(" Over 18");
}
De manière plus concise:
$(this).text(
Date.parse($(this).text()).addYears(18) < Date.today() ?
"Under 18" :
" Over 18"
)
Date.prototype.age=function(at){
var value = new Date(this.getTime());
var age = at.getFullYear() - value.getFullYear();
value = value.setFullYear(at.getFullYear());
if (at < value) --age;
return age;
};
var dob = new Date(Date.parse($(this).text()));
if(dob.age(new Date()) < 18)
{
$(this).text("Under 18");
}
else
{
$(this).text(" Over 18");
}
Vous pouvez supprimer la variable distincte pour la DOB et réduire l'instruction if. Le code ci-dessous contient 165 caractères:
var check = new Date();
check.setFullYear(check.getFullYear() - 18);
$(this).text((new Date("3/6/2009").getTime() - check.getTime() < 0)?"Under 18":"Over 18");
Cela gardera toujours la logique nécessaire pour faire face aux années bissextiles.
$(this).text(((new Date().getFullYear()-Date.parts($(this).text()))>=18)?"Over 18":"Under 18");
Meilleur? :RÉ
Vous pouvez utiliser l'objet Date. Cela retournera les millisecondes entre les deux dates. Il y a 31556952000 millisecondes dans une année.
function dateDiff(var now, var dob)
{
return now.getTime() - dob.getTime();
}
n'oubliez pas que toutes les réponses ci-dessus ne fonctionnent que pour la date en utilisant le séparateur '/'. si vous utilisez autre que cela, vous devez d'abord remplacer ce séparateur.
var startDate = $('#start_date').val().replace('-','/');
var endDate = $('#end_date').val().replace('-','/');
if(startDate > endDate){
// do stuff here...
}
code heureux: D
Ma solution.
var startDt=document.getElementById("startDateId").value;
var endDt=document.getElementById("endDateId").value;
if( (new Date(startDt).getTime() > new Date(endDt).getTime()))
{
----------------------------------
}