Angular 1.3 - 如何处理日期和时间输入字段中的时区

时间:2015-01-15 16:00:04

标签: angularjs momentjs

背景故事:

我的应用程序是时区感知的。用户可以选择特定时区,所有日期输入都可以根据该时区预期值。例如。如果我选择时区纽约市,则每个输入字段都需要并显示UTC-5日期。

使用Angular 1.2,我使用moment.js进行管理。任何输入[date]都有一个字符串生成的字符串作为模型。然后我升级到Angular 1.3。

问题:

Angular 1.3需要将原生Date对象作为所有日期相关输入字段的模型。本机日期对象仅支持浏览器时区或UTC。

那么如何使用Angular 1.3管理时区?我可以以某种方式从modelController中删除验证器吗?知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我找到了一种不太干净且可能有副作用的方法。

我正在使用指令删除特定输入字段上的验证器:

OMD.app.directive('clearValidators', function ($window) {
    return {
        require:'^ngModel',
        restrict:'A',
        link:function (scope, elm, attrs, ctrl) {
            ctrl.$formatters = [];
            ctrl.$parsers = [];
        }
    };
});

这是如何将它应用于输入。在我清除默认验证器后,它似乎添加了所需的验证器。

<input clear-validators type="datetime-local" ng-model="zoneTime" ng-required="required"/>

它与Angular 1.2一样,但我不喜欢这种方法。