【问题标题】:How to check date with current date using jQuery如何使用jQuery检查当前日期的日期
【发布时间】:2014-07-01 00:42:38
【问题描述】:

我想检查我的日期是否大于当前日期

$("#EndDate").val() ="5/13/2014" ->M/d/y

请在下面找到代码

if (Date.parse(new Date()) > Date.parse($("#EndDate").val())) { 

 //condition satisfied for today date too.

}

所以我的结束日期是今天的日期。但当前日期仍然大于结束日期。为什么 ?我该如何检查和验证这一点。我知道某些时间值大于结束日期。但我只想检查日期/月份/年份而不是时间。

【问题讨论】:

  • 我只是更新 $("#EndDate").val() 的值是这样的
  • 更新值将是$("#EndDate").val("5/13/2014")
  • no putvande ..我只是说元素的值就像但它不是一个可以理解的代码。
  • @dowvoter 无故投弃票是不好的。

标签: javascript jquery date


【解决方案1】:

如果:

$("#EndDate").val();

返回 m/d/y 格式的字符串,您可以使用以下方法将其转换为日期对象:

function parseDate(s) {
  var b = s.split(/\D/);
  return new Date(b[2], --b[0], b[1]);
}

要创建一个可比较的日期,请执行您已经在执行的操作:

var today = new Date();
today.setHours(0,0,0,0);

所以现在你可以这样做了:

if (parseDate($("#EndDate").val()) > today) {
  // date is greater than today
}

或者如果你真的必须:

if (+parseDate($("#EndDate").val()) > new Date().setHours(0,0,0,0)) ...

请注意,当您这样做时:

Date.parse(new Date().setHours(0, 0, 0, 0))

首先从new Date() 创建一个新日期。调用 setHours() 设置时间值,但调用的返回值是 Date 对象的 UTC 时间值。

Date.parse 需要一个看起来像日期和时间的字符串,所以如果你向它传递一个数字时间值,比如 1399903200000,那么实现将回退到一些实现启发式,要么转向将其转换为日期或 NaN

所以请不要那样做。使用 Date.parse 解析任何字符串是依赖于实现的(甚至是 ECMA5 中指定的字符串),并且会在不同的浏览器中返回不同的结果。所以也请不要这样做。

【讨论】:

    【解决方案2】:

    尝试如下:

    var end_date    = "05/12/2014"
    if(new Date() > new Date(end_date))
    {   
     alert('End date should be greater than Start date');
    }
    

    fiddle

    【讨论】:

      【解决方案3】:

      我通过修改这样的代码找到了自己的解决方案

      if (Date.parse(new Date().setHours(0, 0, 0, 0)) > Date.parse($("#EndDate").val())) {
      //
      }
      

      避免时间比较。有没有其他更好的方法可以在没有任何插件的情况下有效地比较日期。

      【讨论】:

      • @RobG 你能更新一下比较日期的最佳方法吗?
      【解决方案4】:
      var startDate = moment.parse("18/02/2013", "DD/MM/YYYY");
      var today = new Date();
      var dd = today.getDate();
      var mm = today.getMonth()+1; //January is 0!
      var yyyy = today.getFullYear();
      
      if(dd<10) {
          dd='0'+dd
      } 
      
      if(mm<10) {
          mm='0'+mm
      } 
      
      today = dd+'/'+mm+'/'+yyyy;
      
      
      if (today.isAfter(startDate)) {
      ...
      }
      

      【讨论】:

        【解决方案5】:

        你的要求

        检查我的日期是否大于当前日期

        你给我们这个..

        if (Date.parse(new Date()) > Date.parse($("#EndDate").val())) { 
            //condition satisfied for today date too.
        }
        

        只需要像这样扭转你的状况:

        if (Date.parse(new Date()) < Date.parse($("#EndDate").val())) { 
            //condition satisfied for today date too.
        }
        

        【讨论】:

          【解决方案6】:

          但是,我迟到了,但这是我解决此问题的方法:

          var TodayDate = new Date();
          var endDate= new Date(Date.parse($("#EndDate").val()));
          
          if (endDate> TodayDate) {
              // throw error here..
          }
          

          【讨论】:

            猜你喜欢
            • 2012-06-17
            • 1970-01-01
            • 2021-11-13
            • 2019-03-03
            • 2010-11-18
            • 1970-01-01
            • 2021-04-11
            • 2015-01-04
            相关资源
            最近更新 更多