【问题标题】:Validate if date is before date of current date验证日期是否早于当前日期的日期
【发布时间】:2012-07-05 12:27:28
【问题描述】:

使用此功能,我将获得 7 天的差价;如何测试日期是否早于当前日期?

function validateDate() {
    pickedDate = Date.parse("05-Jul-2012".replace(/-/g, " "));
    todaysDate = new Date();
    todaysDate.setHours(0, 0, 0, 0);
    dateDifference = Math.abs(Number(todaysDate) - pickedDate);
    //7 Days=604800000ms
    if (dateDifference > 604800000) {
        return false;
    } else {
        return true;
    }
}

【问题讨论】:

  • 我不明白这个问题。
  • 如果用户在当前日期之前输入日期,那么我必须生成警报。
  • 看到今天的日期是 2012 年 7 月 5 日,如果他选择 2012 年 7 月 4 日或 7 月 4 日之前,那么我必须生成警报
  • todaysDate.setHours(0, 0, 0, 0); 你的代码有什么用?

标签: javascript date


【解决方案1】:

你可以直接比较两个日期

return pickedDate <= todaysDate

对于考虑毫秒的确切日期比较,您可以使用 getTime() method

您可以像以前一样解析日期:

pickedDatestr = "09-Apr-2010"
var pickedDate = new Date(Date.parse(pickedDatestr.replace(/-/g, " ")))

【讨论】:

  • 我选择的日期是这种格式“dd-MMM-yyyy”我如何将今天的日期转换为“dd-MMM-yyyy”格式
  • 如果选择今天的日期,那么也会收到警报,看看 if (pickedDate > todaysDate) { return true; } else { alert("失效日期。");返回假; }
  • 它也会检查毫秒。因此会显示警报。
  • 不,我只需要检查日期
  • 你可以试试 JavaScript getMilliseconds() 方法w3schools.com/jsref/jsref_getmilliseconds.asp
【解决方案2】:

日期比较(无时间):

function isDateBeforeToday(date) {
    return new Date(date.toDateString()) < new Date(new Date().toDateString());
}

isDateBeforeToday(new Date(2016, 11, 16));

测试用例:

// yesterday
isDateBeforeToday(new Date(2018, 12, 20)); // => true

// today
isDateBeforeToday(new Date(2018, 12, 21)); // => false

// tomorrow
isDateBeforeToday(new Date(2018, 12, 22)); // => false

【讨论】:

  • 如果被比较的日期早于同一日期怎么办?如果您在晚上 8 点运行它并且比较的日期是下午 2 点,理论上它可以返回 true。
  • @BarryChapman 你完全正确!此代码仅限于比较整数日期值(根据作者的要求)。比较日期时间将是一个不同的用例,可以通过标准日期比较 (dateA > dateB) 来解决。
  • 这适用于日期比较,它真的很有帮助,因为我没有检查datetimes,所以谢谢!
【解决方案3】:
new Date() > new Date('2022-01-24')

就我而言,我不在乎时间。

【讨论】:

    【解决方案4】:

    我提出这个问题是因为我试图检查我从后端获取的 Java.util.Date 是否在今天之后。

    最后我找到了一个非常简单的解决方案——通过比较毫秒,像这样:

      isAfterToday(date) {
        return new Date(date).valueOf() > new Date().valueOf();
      }
    

    函数valueOf() 记录在here

    【讨论】:

      【解决方案5】:

      试试这个功能

      function checkDate(day, month, year)
      {
          var regd = new RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})\$");
      
          var date = month + "/" + day + "/" + year;
          var date = new Date(date);
          var today = new Date();
      
          var vdob = regd.test(date);
      
          var err_txt = "" ;
      
          if(date.getDate() != day || (date.getTime()>today.getTime()))
          {
                  err_txt+=("Please select a valid Date.\n")
          }
      
          return (err_txt);
      }
      

      【讨论】:

        【解决方案6】:

        您可以使用''等直接比较两个日期。

        function validateDate(date) {
            //get start of day using moment.js
            const now = Moment().startOf('day').toDate();
            if (date < now) {
                return false; //date is before today's date
            } else {
                return true; //date is today or some day forward
        }
        

        【讨论】:

          【解决方案7】:

          以下将检查日期是否在今天之前:

          function isBeforeToday(){
            var today = new Date((new Date()).toString().substring(0,15));
            return date < today;
          }
          

          这通过在从相应的日期字符串中剥离所有时间信息后创建一个新的日期对象来工作:

          Tue Mar 06 2018 16:33:15 GMT-0500 (EST) -> Tue Mar 06 2018 -> Tue Mar 06 2018 00:00:00 GMT-0500 (EST)

          【讨论】:

            【解决方案8】:
            if(this.dateString1.getFullYear() <= this.dateString2.getFullYear() )//check the year
              { 
                // console.log("date1+date2"+this.dateString1.getFullYear()+this.dateString2.getFullYear())
                if(this.dateString1.getMonth() <= this.dateString2.getMonth())//check the month
                  {
                    // console.log("date1+date2"+this.dateString1.getMonth()+this.dateString2.getMonth())
                    if(this.dateString1.getDate() < this.dateString2.getDate())//check the date
                    this.toastr.error("Project Start Date cannot be Previous Date");
                      return;
                  }
              }
            

            【讨论】:

              猜你喜欢
              • 2015-01-04
              • 2021-07-12
              • 1970-01-01
              • 1970-01-01
              • 2014-04-23
              • 2017-07-30
              • 1970-01-01
              • 2019-12-24
              • 1970-01-01
              相关资源
              最近更新 更多