jQuery字符串比较?

时间:2012-02-21 06:45:29

标签: javascript jquery jquery-ui

我正在比较两个日期,我的代码是这样的。

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处缺少数字 谁能告诉我我做错了什么。

2 个答案:

答案 0 :(得分:3)

来自fine manual

  

parseDate(格式,值,设置)
  [...]
  可能会抛出许多例外情况:

     
      
  • '如果格式表示未找到的数值
  • ,则在位置nn处缺少数字   

所以你的错误来自jQuery-UI。您从date.toString()获得的格式取决于浏览器和区域设置,没有理由期望它始终为dd/mm/yy,在您的情况下,它不是。{/ p>

您的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)

答案 1 :(得分:0)

可能是parseDate()存在一些问题 您只需使用

即可比较日期
if (today > date){...}