Лучшее решение для вызова angular.isDate ()

0

Я хочу проверить свой тип переменной, это дата. Я хочу использовать функцию 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 , а не строкой, которую можно интерпретировать как date…
  • 0
    Я не уверен, почему вы просто не будете делать это в контроллере? Вы специально хотите показать результат на экране? в этом случае я все равно оставляю логику в контроллере и просто представляю результат через свойство контроллера.
Показать ещё 2 комментария
Теги:

1 ответ

0

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

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

Однако, как отмечает MDN:

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

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

  • 0
    Если я использую Date.parse мне не нужно angular.isDate , потому что мы можем написать код , как это
  • 0
    Ага. Вы не должны зависеть от Angular для обработки дат, это не то, для чего он.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню