javascript - Angular js - isDate() 将不起作用

标签 javascript string angularjs date

我正在尝试检查一个值是否是这样的日期:

var input = "2014-04-01T15:22:30.000Z";

var dateTime = {
    year: $filter('date')(input,'yyyy'),
    day: $filter('date')(input,'EEE'),
    dayNum: $filter('date')(input,'d'),
    month: $filter('date')(input,'MMM'),
    hours:$filter('date')(input,'H'),
    mins: $filter('date')(input,'m'),
    seconds:$filter('date')(input,'ss')
};

if(angular.isDate(dateTime.year+' '+dateTime.month+' '+dateTime.dayNum)) { 
    // always false 
}

为什么总是假的?

正确过滤了年、月等片段:/

最佳答案

以下陈述总是错误的,也许您对 isDate 工作原理的假设不正确?

angular.isDate('2014 Mar 1');

这是 source code for the isDate function .您会看到它检查提供的值是否是 javascript Date 对象。

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

您可能想知道为什么 Angular 允许您执行以下操作:

var input = "2014-04-01T15:22:30.000Z";
var year = $filter('date')(input,'yyyy');

这是因为date filter实际上在返回格式化副本之前将您的输入转换为日期。因此,对于日期过滤器,它允许您传入一个字符串,但 isDate 函数需要一个 Date 对象。

关于javascript - Angular js - isDate() 将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22938734/

相关文章:

javascript - 显示警报时停止提交

javascript - 当单击邮件图标时,将使用此电子邮件 ID 打开邮件

javascript - NG-repeat 不起作用,但可以看到单个项目

javascript - Yeoman Angular Generator Grunt Build scripts/vendor.js 为空

javascript - 如果混合应用程序从远程服务器加载包括 javascript 在内的资源,Apple 是否会拒绝混合应用程序?

javascript - "rx"和 "rxjs"npm 包有什么区别?

Java:找到没有任何数字和至少一个大写字符的最长子串

c# - 解析变量 URI(RegEx、Uri、字符串函数?)c#

javascript - Protractor 设置全局变量

关于元组和字符串的 Python 新手说明