检查输入日期是否在给定范围内

Check if input date is in given range

本文关键字:范围内 是否 输入 日期 检查      更新时间:2023-09-26

我有一个简单输入类型的表单。我正在尝试定义一个函数来检查与输入类型提供的日期相比,日期是否不超过 6 个月。我知道我必须转换 Date 对象中输入提供的字符串才能进行比较,然后处理 Date 对象的 get 方法,但我无法弄清楚如何做到这一点。

当前代码:

$scope.compareDates = function(d1) {
        d1 = new Date(d1); //convert String into date Object                
        var d = new Date(); // today date           
        d.setYear(d.getFullYear());
        d.setMonth(d.getMonth() - 6);           
        if(d1 > d ) {
            console.log("ok");
        } else {
            console.log("error");               
        }
    }   

编辑:

对不起,我忘了添加我的输入。在这里:

<input class="form-control" type="text" placeholder="gg/mm/aaaa" ng-model="sStartDate" ng-change="change()">

角度控制器:

$scope.sStartDate = '';
$scope.change = function(){
    var startDt = $scope.sStartDate;
    $scope.compareDates(startDt);
}
如果我

正确阅读了您的代码,您的日期格式是天/月/年,这不是有效的格式。您需要交换月份和日期。

var parts = d1.split(),
    dateStr = parts[1] + "/" + parts[0] + "/" parts[2],
    d1 = new Date(d1),
    d = new Date();
d.setMonth(d.getMonth() - 6);
if(d1 > d ) {
    console.log("ok");
} else {
    console.log("error");               
}

使用d.getTime()是怎么回事?

$scope.compareDates = function(d1){
        d1 = new Date(d1); //convert String into date Object                
        var d = new Date(); // today date           
        d.setMonth(d.getMonth() - 6);           
        if(d1.getTime() > d.getTime() ) {
            console.log("ok");
        } else {
            console.log("error");                
        }
    }   

问候。

我在我们的应用程序中使用了momentjs。它使这个过程非常容易和顺利。

// is6MonthsOld will be a boolean value
var is6MonthsOld = moment(d1).isBefore(moment().subtract(6, 'months'));

如果您比较的是dates而不是time,请确保使用 d1.setHours(0,0,0,0) 重置日期对象中的时间。

当你做new Date()时,输出是一个datetime对象,但是当你做new Date(2015,6,19)时,只分配日期,时间设置为00:00:00

以下代码描述了相同的内容:

function compareDates(d1,d2){
  return +d2 > +d1;
}
function compareDatesWithHoursReset(d1,d2){
  d1.setHours(0,0,0,0);
  d2.setHours(0,0,0,0);
  return +d2 > +d1;
}
function main(){
  var d1 = new Date();
  var d2 = new Date(2015, 6, 19);
  d1.setMonth(d1.getMonth() - 6)
  
  console.log(d1);
  console.log(d2);
  
  console.log(compareDates(d2,d1))
  console.log(compareDatesWithHoursReset(d2,d1))
}
main();