JQuery Datepicker:如果选择的日期是今天的日期

Posted

技术标签:

【中文标题】JQuery Datepicker:如果选择的日期是今天的日期【英文标题】:JQuery Datepicker: If selected date is today's date 【发布时间】: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');

但它没有达到那个警报。上面的说法有什么问题?

【问题讨论】:

【参考方案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.

【讨论】:

嗨,我使用了jqueryui.com/datepicker 日期选择器,我需要检查所选日期是否是今天。我使用了你的代码,但它既没有显示答案也没有显示日期选择器【参考方案4】:

getTime() 返回毫秒,而不是比较日期月份和年份,我相信这是正常的日期比较(可能是错误的)。见:http://www.w3schools.com/js/js_obj_date.asp

【讨论】:

【参考方案5】:

你也可以这样做:

$( function() 
      $( "#datepicker" ).datepicker(
         dateFormat: "dd/mm/yy",
        minDate: 0, 
        //maxDate: "+12M +10D"   
        
      );
     );

使用 minDate: 0,您可以显示当前日期,

【讨论】:

以上是关于JQuery Datepicker:如果选择的日期是今天的日期的主要内容,如果未能解决你的问题,请参考以下文章

Datepicker JQUERY 不选择输入日期

jquery datepicker 在当前日期或选定日期

jQuery UI 实例 - 日期选择器(Datepicker)

如何根据 datepicker 选择的日期动态设置 jquery.timepicker minTime?

jQuery UI Datepicker - 多个日期选择

jQuery:如果 DatePicker UI 更改,则更新某个文本框