好的,所以我试图测试一个日期是否比今天更早。我正在使用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");
}
当我测试时,我总是收到警告“今天的日期更大”。我可以通过警报显示我的两个日期变量,我看到日期格式正确。那么,为什么在解析工作正常时这种比较失败呢?
答案 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)