web-dev-qa-db-fra.com

Âge à partir de la date de naissance avec JQuery

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.

20
Robin Day

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"
)
25
Ken Browning
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");
}
9
Dave

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.

3
Parrots
$(this).text(((new Date().getFullYear()-Date.parts($(this).text()))>=18)?"Over 18":"Under 18");

Meilleur? :RÉ

1
Sudhir Jonathan

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();
}
0
Shaun Humphries

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

0
Vikash Singh

Ma solution.

var startDt=document.getElementById("startDateId").value;
var endDt=document.getElementById("endDateId").value;
if( (new Date(startDt).getTime() > new Date(endDt).getTime()))
{
    ----------------------------------  
}
0
samba