amDateFormat在AngularJS中破坏了amTimezone

时间:2019-02-14 22:41:14

标签: angularjs momentjs angular-moment

我的代码如下,安装了角矩包:

<td data-ng-bind="'2019-02-04T13:42:06.927+00:00' | amTimezone:'America/Halifax' | amDateFormat: 'MM/DD/YYYY hh:mm A'"></td>

该代码输出:“ 02/04/2019 01:42 PM”

当我在没有amDateFormat过滤器的情况下运行以上代码时,我得到: “ 2019年2月4日星期一9:42:06 GMT-0400”

所以我知道每个过滤器都在工作,但是在对angular-moment.js文件进行了一些调试之后,preprocessDate称它为破坏我的时区信息的原因。

.filter('amDateFormat', ['moment', 'amMoment', 'angularMomentConfig', function (moment, amMoment, angularMomentConfig) {
                function amDateFormatFilter(value, format) {
                    if (isUndefinedOrNull(value)) {
                        return '';
                    }

                    var date = amMoment.preprocessDate(value);
                    if (!date.isValid()) {
                        return '';
                    }

                    return date.format(format);
                }

                amDateFormatFilter.$stateful = angularMomentConfig.statefulFilters;

                return amDateFormatFilter;
            }])

在我的angular-moment.js文件的angularMomentConfig中,预处理已设置为null,但它正在运行moment.js中的createUTC()作为预处理器功能。

我不知道如何调用该函数,或者这是否是导致我的问题的原因,但我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我知道了。 我们在核心模块中设置了一个我没有看过的预处理器。

.constant('angularMomentConfig', {
    preprocess: moment.utc
  })

删除后,它才能正常工作。