我需要使用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个字符的数据库字段中。更改数据库不是快速或容易发生的事情。
答案 0 :(得分:25)
您可能会发现开源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"
)
答案 1 :(得分:9)
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");
}
答案 2 :(得分:3)
您可以删除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 :(得分:1)
$(this).text(((new Date().getFullYear()-Date.parts($(this).text()))>=18)?"Over 18":"Under 18");
更好? :d
答案 4 :(得分:0)
您可以使用Date对象。这将返回两个日期之间的毫秒数。一年有31556952000毫秒。
function dateDiff(var now, var dob)
{
return now.getTime() - dob.getTime();
}
答案 5 :(得分:0)
我的解决方案。
var startDt=document.getElementById("startDateId").value;
var endDt=document.getElementById("endDateId").value;
if( (new Date(startDt).getTime() > new Date(endDt).getTime()))
{
----------------------------------
}
答案 6 :(得分:0)
请记住,以上所有答案仅适用于使用分隔符'/'的日期。如果您正在使用其他,那么您必须先替换该分隔符。
var startDate = $('#start_date').val().replace('-','/');
var endDate = $('#end_date').val().replace('-','/');
if(startDate > endDate){
// do stuff here...
}
快乐的编码:D