2016-08-17 3 views
0

Я хочу проверить свой тип переменной, это дата. Я хочу использовать функцию angular.isDate().Лучшее решение для вызова angular.isDate()

Если моя переменная имеет значение «2016-08-10T08: 38: 49.397» angular.isDate() возвращает false, что я могу сделать?

<div ng-app="autoDrops" ng-controller="testController"> 
     {{isDate(date)}} 
<div> 

var autoDrops = angular.module('autoDrops', []); 
autoDrops.controller('testController', function ($scope) { 
     $scope.date = '2016-08-10T08:38:49.397' 
    $scope.isDate = function(value){ 
     return angular.isDate(value); 
    } 
}); 

Пример находится на (jsfiddle)

+2

'isDate' проверяет, является ли значение буквально * экземпляром' Date' *, а не строкой, которая может быть интерпретирована как дата ... – deceze

+0

Я не уверен, почему вы просто не делали бы этого в контроллере ? Вы специально хотите показать результат на экране? и в этом случае я бы по-прежнему сохранил логику в контроллере и просто представил результат через свойство контроллера. –

+0

Я знаю, но какое наилучшее решение для этой проблемы, когда у вас есть datetime в строке? –

ответ

0

angular.isDate буквально проверяет, является ли данное значение является экземпляром Date. Если вы хотите разобрать строку видеть, содержит ли это значение, которое может быть истолковано как дата, используйте Date.parse:

> Date.parse('woeriug') 
< NaN 
> Date.parse('2016-08-10T08:38:49.397') 
< 1470818329397 

Однако as MDN notes:

Разбор строк с Date.parse сильно обескуражен из-за различий браузера и несоответствий.

Если вы хотите большей надежности, используйте стороннюю библиотеку, которая реализует надежный и независимый от браузера синтаксический анализ даты (или сделайте это самостоятельно).

+0

Если я использую Date.parse, мне не нужен angular.isDate, потому что мы можем написать код, например [this] (https://jsfiddle.net/5bL5tfo5/30/) –

+0

Yup. Вы не должны зависеть от Angular для обработки дат, для чего это не так. – deceze

+0

проблема в date.parse, когда вы передаете номер, эта функция возвращает действительную дату [пример] (https://jsfiddle.net/5bL5tfo5/31/). Это нехорошее решение. –

Смежные вопросы