jQuery字符串比较?

问题描述 投票:0回答:2

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

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号位置缺少号码可以告诉我我在哪里做错了。

javascript jquery jquery-ui
2个回答
3
投票

来自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)

0
投票

可能是parseDate()存在一些问题你可以只使用just来比较日期

if (today > date){...}
© www.soinside.com 2019 - 2024. All rights reserved.