web-dev-qa-db-ja.com

JQueryを使用した生年月日からの年齢

JQueryを使用して、誰かが生年月日から18歳以上かどうかを計算する必要があります。

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");
}

SetFullYearおよびgetFullYearメソッドを使用するよりも、日付を比較するために使用できるいくつかの簡単な関数が必要です。

注:新しいメソッドを見つけたいという私の実際の理由は、コードの長さです。このコードを250文字に制限されているデータベースフィールドに収める必要があります。データベースの変更は、すばやく簡単に行われることではありません。

20
Robin Day

オープンソース Datejs ライブラリーが役立つかもしれません。具体的には addYears 関数です。

var dob = Date.parse($(this).text());
if (dob.addYears(18) < Date.today())
{
    $(this).text("Under 18");
}
else
{
    $(this).text(" Over 18");
}

より簡潔な方法で:

$(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

DOBの個別の変数を削除して、ifステートメントを折りたたむことができます。以下のコードは165文字です。

var check = new Date();
check.setFullYear(check.getFullYear() - 18);
$(this).text((new Date("3/6/2009").getTime() - check.getTime() < 0)?"Under 18":"Over 18");

これにより、うるう年を処理するために必要なロジックが維持されます。

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

いい? :D

1
Sudhir Jonathan

Dateオブジェクトを使用できます。これは、2つの日付間のミリ秒を返します。 1年は31556952000ミリ秒です。

function dateDiff(var now, var dob)
{
    return now.getTime() - dob.getTime();
}
0
Shaun Humphries

上記のすべての回答は、区切り文字「/」を使用した日付に対してのみ機能することに注意してください。これ以外のものを使用している場合は、最初にそのセパレータを置き換える必要があります。

var startDate = $('#start_date').val().replace('-','/');
var endDate = $('#end_date').val().replace('-','/');

if(startDate > endDate){
   // do stuff here...
}

幸せなコーディング:D

0
Vikash Singh

私の解決策。

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