【问题标题】:Find difference between two dates picked from jQuery datepicker查找从 jQuery datepicker 选择的两个日期之间的差异
【发布时间】:2012-12-06 18:37:22
【问题描述】:

我有两个通过 jQuery datepickers 选择日期的文本框。 我想在 JavaScript 中访问它们并找出它们之间的天数差异。

我通过文本框的 clientID 访问日期并简单地获取差异,但这对我不起作用。 是否有一些特定的方法可以从通过 datepicker 填充的文本框中访问日期值,以及找到以天为单位的差异的任何特殊方法?

我的日期字段:

<td style="width: 15%">
    <asp:TextBox ID="txtStartDt" runat="server" Enabled="true" Width="80%" ValidationGroup="Save"></asp:TextBox>
    <img alt="Select Date" src="../Images/show-calendar.gif" border="0" style="width: 17px; height: 16px;"  onclick="javascript:calendarPicker('ContentPlaceHolder1_txtStartDt')" id="IMG1" />
</td>
<td style="width: 9%">
    <asp:Label ID="Label3" runat="server" CssClass="label">End Date:</asp:Label>
</td>
<td style="width: 248px">
    <asp:TextBox ID="txtEndDt" runat="server" Enabled="true" Width="126px"></asp:TextBox>
    <img alt="Select Date" src="../Images/show-calendar.gif" border="0" style="width: 17px; height: 16px;" onclick="javascript:calendarPicker('ContentPlaceHolder1_txtEndDt')" id="IMG2" />
</td>

我的 JavaScript:

function CheckDuration() {
    var toDate1 = document.getElementById('<% =txtStartDt.ClientID%>');
    var toDate2 = new Date(toDate1.value.replace('-', ' '));

    var toDate = toDate2.setDate(toDate2.getDate());

    var toDate4 = document.getElementById('<% =txtEndDt.ClientID%>');
    var toDate5 = new Date(toDate1.value.replace('-', ' '));

    var toDate6 = toDate2.setDate(toDate2.getDate());

    if ((toDate6 - toDate) > 30)
        confirm("Selected time period is of more than 1 month duration");
}

【问题讨论】:

  • 我们无法帮助您了解您拥有的代码以及您尝试过的内容。
  • 是的,高级视图是将两个文本框的值转换为 Date 对象并使用 Date API 方法..
  • 问题是我在家..并且无法访问代码..我认为解释可能会有所帮助..无论如何我会尝试在早上更新。
  • 我会以简单的方式将 date.js 包含在您的项目中并使用它。我建议将 date.js 用于任何 javascript 日期操作,效果很好。 datejs.com

标签: javascript jquery asp.net datepicker


【解决方案1】:

有内置方法可以从具有日期选择器的输入中获取日期,并且该日期将是一个 javascript 日期对象,您可以在该对象上使用 getTime() 之类的函数从纪元中获取毫秒数,然后只需减去一个从另一个:

var from_date = $("#from_input").datepicker('getDate'),
    to_date   = $("#to_input").datepicker('getDate');

var diff_in_milliseconds = to_date.getTime() - from_date.getTime();

现在你必须算出一天有多少毫秒?

编辑:

我将为此添加一个示例

FIDDLE

【讨论】:

  • 谢谢,我试试这个“#..”必须有客户 ID?
【解决方案2】:

使用以下 Java 脚本,您会发现日期和日期之间的差异。假设有两个盒子,名称为 dtpEventDate = '06/12/2012' 和 dtpEndDate = '08/12/2012'

var fa = dtpEventDate.split('/')
var ta = dtpEndDate.split('/')

//  var a = new Date(fa[1]-1,fa[0],fa[2]);          
//  var d = new Date(ta[1]-1,ta[0],ta[2]); for MM-dd-yyyy

    var a = new Date(fa[2],fa[1]-1,fa[0]);
    var d = new Date(ta[2],ta[1]-1,ta[0]); // for dd-MM-yyyy

使用 var a 和 d 我们可以找到日期之间的差异

【讨论】:

    【解决方案3】:
    function CheckDuration() {
                    //                alert("");
    
                    var toDate1 = document.getElementById('<% =txtStartDt.ClientID%>');
                    var toDate2 = new Date(toDate1.value.replace('-', ' '));
    
                    var toDate = toDate2.setDate(toDate2.getDate());
    
                    var toDate4 = document.getElementById('<% =txtEndDt.ClientID%>');
                    var toDate5 = new Date(toDate4.value.replace('-', ' '));
    
                    var toDate6 = toDate5.setDate(toDate5.getDate());
    
                    if (toDate && toDate6) {
                           diff = ((toDate6 - toDate) / 86400000);
    
          //                        alert(diff);
                            if(diff>30)
                            return confirm("Selected time period is of more than 1 month duration");
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      相关资源
      最近更新 更多