无法使用jQuery UI的datepicker比较日期

时间:2014-11-11 21:35:57

标签: javascript jquery jquery-ui date datepicker

好的,所以我试图测试一个日期是否比今天更早。我正在使用jQuery UI的Datepicker来解析日期并将其分配给变量:

//Get Date as String
var $strDate = $(".pmt-date").text();
//Parse Date
var $dtDate = $.datepicker.parseDate("mm/dd/yy", $strDate);

然后我得到今天的日期并将其分配给变量:

//Get Today's Date
var $strToday $.datepicker.formatDate('mm/dd/yy', new Date());
var $tDate = $.datepicker.parseDate('mm/dd/yy', $strToday);

现在我想将$ dtDate与$ tDate进行比较。这就是我的尝试:

if($dtDate > $tDate)
{
     alert("Payment Date is Greater");
}
else
{
     alert("Today's Date is Greater");
}

当我测试时,我总是收到警告“今天的日期更大”。我可以通过警报显示我的两个日期变量,我看到日期格式正确。那么,为什么在解析工作正常时这种比较失败呢?

2 个答案:

答案 0 :(得分:2)

假设字段为&#34; pmt-date&#34;是由datepicker控制的<input>元素,您需要使用.val()获取其值,而不是.text()

var $strDate = $(".pmt-date").val();

您的下一行代码是指一个名为&#34; $ date&#34;的变量,而不是&#34; $ strDate&#34;,所以:

var $dtDate = $.datepicker.parseDate("mm/dd/yy", $strDate);

一旦你有了这个,你就可以直接比较Date对象:

if ($dtDate < new Date())

没有必要将新构造的Date对象转换为字符串,然后再转回日期。我想你要将日期字符串串回来以便剥离日期的时间部分,这样做并不是一个糟糕的方法。

答案 1 :(得分:1)

在日期比较中,超过表示日期之后的日期,而不是表示日期之前的日期。比以前暗示日期更早,因此你想要使用少于

if($dtDate < $tDate)