我正在比较两个日期,我的代码是这样的。
jQuery('.newAppointment a.ui-state-default').click(function() {
var date = jQuery(this).parent().attr('title');
var d = jQuery.datepicker.parseDate('dd/mm/yy',date.toString());
alert(d);
var today = new Date;
var t = jQuery.datepicker.parseDate('dd/mm/yy',today.toString() );
alert(t)
if(t > d){
url = "/users/" + user_id + "/events/new?type=Surgery"+"&day=" + escape(date);;
window.location = url;
}else{
alert("you cannot add appointment to past dates");
}
});
但我在萤火虫中得到错误。没有被捕的例外:在0号位置缺少号码可以告诉我我在哪里做错了。
来自fine manual:
parseDate(格式,值,设置) [...] 可能会抛出许多异常:
- '如果格式表示未找到的数值,则在位置nn处缺少数字'
所以你的错误来自jQuery-UI。你从date.toString()
获得的格式取决于浏览器和语言环境,没有理由期望它始终是dd/mm/yy
,在你的情况下,它不是。
你的date
已经是一个字符串并且是一种已知的格式(大概是dd/mm/yy
)所以你应该能够做到这一点:
var d = jQuery.datepicker.parseDate('dd/mm/yy', date);
得到一个日期。然后你就可以得到today
:
var today = new Date;
并直接比较它们:
if(today > d)
如果你想丢掉小时,分钟和秒,那么:
var now = new Date;
// Or set milliseconds, seconds, minutes, and hours to zero.
var today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
if(today > d)
可能是parseDate()存在一些问题你可以只使用just来比较日期
if (today > date){...}