【问题标题】:JQuery Datepicker: If selected date is today's dateJQuery Datepicker:如果选择的日期是今天的日期
【发布时间】:2012-04-14 07:56:31
【问题描述】:
我可以使用以下方法确定所选日期是否过去:
var due_date = $('#due_date').val();
if(new Date(due_date).getTime() < new Date().getTime())
{
//do stuff
}
^这很好用
我正在使用以下内容来确定所选日期是否是今天的日期:
var due_date = $('#due_date').val();
var today = new Date().getTime();
if(new Date(due_date).getTime() == today)
{
alert('ok');
}
但它没有达到那个警报。上面的说法有什么问题?
【问题讨论】:
标签:
jquery
jquery-ui
date
datepicker
jquery-ui-datepicker
【解决方案1】:
datepicker 对象有一个 getDate 方法,您可以使用该方法返回一个日期值以将其与新的 date() 进行比较。在新的约会日期你确实需要做一些进一步的按摩,但这应该会让你得到你想要的。
JsFiddle Example
HTML:
Date: <input type="text" id="thedate"/>
<div id="checkDate">Check Date</div>
JS:
$('#thedate').datepicker();
$('#checkDate').bind('click', function() {
var selectedDate = $('#thedate').datepicker('getDate');
var today = new Date();
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
if (Date.parse(today) == Date.parse(selectedDate)) {
alert('today!');
} else {
alert('not today');
}
});
【解决方案2】:
字符串“30/03/2012”用于创建日期时会生成一个代表 2012 年 3 月 30 日午夜的 Date 对象。当您调用 new Date() 时,它会创建一个代表当前时间的 Date 对象(包括秒和毫秒)。
您需要使用setHours()、setMinutes() 等函数将 Date 对象的小时、分钟、秒和毫秒属性设置为 0,以便它们表示完全相同的时间。
有关 Date 对象的更多信息,请查看MDN entry。
【解决方案3】:
您需要确保将苹果与苹果进行比较。这是一个简单的检查方法:
jQuery:
$('#dp').datepicker({
onSelect: function(dateText) {
var today = new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()).getTime();
var selected = new Date(dateText).getTime();
if (today > selected) alert('prior to today');
else if (today < selected) alert('after today');
else alert('today');
}
});
jsFiddle example.
【解决方案5】:
你也可以这样做:
$( function() {
$( "#datepicker" ).datepicker(
{ dateFormat: "dd/mm/yy",
minDate: 0,
//maxDate: "+12M +10D"
}
);
} );
使用 minDate: 0,您可以显示当前日期,