验证日期是否在特定格式的给定范围内

时间:2016-11-16 12:18:49

标签: javascript date protractor

我有一个表格列,其中包含2014年1月1日格式的不同人的出生日期。我需要检查此列中显示的所有出生日期是否在2012年1月1日至1月1日之间的特定范围内,2016年。 我有问题将我的日期范围作为变量传递,并比较我从量角器脚本中的表列获得的值。下面是我写的一段代码

    this.matchRange = function(value){
        this.names = element.all(by.repeater('row in jsonResponse').column(value)); 
    var startDate = 'Jan 1, 2012';
    var endDate = 'Jan 1, 2016';


    this.inResults = function(nameString){    
        return this.names.filter(function(name){
            return name.getText().then(function(testDate){
                console.log(testDate);  
                //expect(text).toMatch(nameString)
                return testDate >= startDate &&
                        testDate <= endDate;
                });
            }).then(function(filteredElements){
                // Only the elements that passed the filter will be here. This is an array.
                return filteredElements.length > 0;
                });
    };

    };

1 个答案:

答案 0 :(得分:0)

如果你想解析像2014年1月1日这样的字符串&#39;你应该使用一个库或一个简单的函数(3行代码)。将字符串解析为日期后,可以直接比较它们:

if (dateA < dateB) {
  // dateA is before dateB
}

以MMM D,YYYY格式解析日期的简单函数是:

&#13;
&#13;
// Parse date string like Jan 1, 2014
function parseMMMDYYYY(s) {
  var months = 'jan feb mar apr may jun jul aug sep oct nov dec'.split(' ');
  var b = s.match(/\w+/g) || [];
  return new Date(b[2], months.indexOf([b[0].toLowerCase()]), b[1]);
}
                               
console.log(parseMMMDYYYY('Jan 1, 2014').toLocaleString())
&#13;
&#13;
&#13;