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

AngularJS : isDate() returns false if passed argument is not a Date object

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

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

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

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

1
2
3
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"。


angular.isDate()检查输入是否为Date类型。
AngularJS的函数源

1
2
3
function isDate(value) {
  return toString.call(value) === '[object Date]';
}

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

1
2
3
4
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():

检查字符串是否为日期值


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

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