AngularJS:如果传递的参数不是Date对象,则isDate()返回false

时间:2015-07-29 10:07:49

标签: angularjs

我只是尝试检查一个字符串是否是日期。这是我在角度JS中的代码。

var mydt= "2015/07/29"; 
document.write(angular.isDate(mydt));

这总是返回false。 但实际上这是一个约会。

但是当我尝试这段代码时,

var cur_date = new Date(); 
document.write(cur_date);    
document.write(angular.isDate(cur_date)); 

执行结果是,

2015年7月29日星期三15:15:13 GMT + 0530(斯里兰卡标准时间) 真

我想知道为什么我们无法检查简单的日期格式,例如" yyyy / mm / dd"以简单的方式。

2 个答案:

答案 0 :(得分:4)

angular.isDate()检查输入是否为Date类型。 来自 AngularJS

的函数源
function isDate(value) {
  return toString.call(value) === '[object Date]';
}

这就是为什么angular.isDate在Date对象上返回true,但在字符串上返回false。

var d = new Date('7/29/2015');
alert(angular.isDate(d)); // Alerts true on the date object
alert(d.toString()); // Alerts the string value of the date object
alert(angular.isDate(d.toString())); // Alerts false on the string value

jsfiddle

您可以使用Date.parse():

Check if a string is a date value

答案 1 :(得分:0)

function isValidDate(dateString) {
  var regEx = /^\d{4}-\d{2}-\d{2}$/;
  return dateString.match(regEx) != null;
}

检查字符串是否包含数字4 - 2 - 2