验证日期是否在当前日期之前

时间:2012-07-05 12:27:28

标签: javascript date

使用此功能,我有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;
    }
}

8 个答案:

答案 0 :(得分:34)

您可以直接将两个日期比较为

return pickedDate <= todaysDate

对于精确的日期比较,考虑您可以使用的毫秒数 JavaScript getMilliseconds() Method

您可以像完成一样解析日期:

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

答案 1 :(得分:4)

日期比较(没有时间):

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

答案 2 :(得分:2)

尝试此功能

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);
}

答案 3 :(得分:0)

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

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) - &gt; Tue Mar 06 2018 - &gt; Tue Mar 06 2018 00:00:00 GMT-0500 (EST)

答案 4 :(得分:0)

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;
      }
  }

答案 5 :(得分:0)

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

最后,我找到了一个非常简单的解决方案-通过比较毫秒,如下所示:

@PostMapping("test")
public ResponseEntity<Object> graphQl(@RequestBody String body){

    ExecutionResult response = graphQlServer.execute(body);

    ExecutionResultImpl responseImpl = (ExecutionResultImpl) response;

    List<GraphQLError> customizedErrors = Lists.newArrayList();
    for (GraphQLError gqlError : responseImpl.getErrors()) {
            //Do your error custmosation here....
            GraphQLError customizedError = gqlError;
            if (gqlError instanceof ValidationError) {
                ValidationError error = (ValidationError) gqlError;
                customizedError = new ValidationError(error.getValidationErrorType(), error.getLocations(),
                        "Customizing some error message blablabla....");
            }
            customizedErrors.add(customizedError);
    }

    Map<String, Object> specResponse = responseImpl.transform(b->b.errors(customizedErrors)).toSpecification();

    return ResponseEntity.ok(specResponse);
}

函数 isAfterToday(date) { return new Date(date).valueOf() > new Date().valueOf(); } 已记录在here中。

答案 6 :(得分:0)

如果您正在使用 moment.js 或愿意在您的项目中使用它,另一种代码更简洁的方法如下:

const dateToCheck = "2021-02-25";
return moment().isBefore(dateToCheck);

答案 7 :(得分:-1)

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

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
}