如何在全球范围内设置角度矩时区?

时间:2014-08-13 10:32:44

标签: javascript angularjs timezone momentjs

我在角度应用中使用了角度矩js。我想根据当前用户的时区显示日期和时间。我无法在我的应用上全局应用时区。

https://github.com/urish/angular-moment

我试过了。

angular.module('myapp').constant('angularMomentConfig', {
    timezone: 'Europe/London' // e.g. 'Europe/London'
});

在我的一个观点中 -

{{home.eventStart| amDateFormat:'dddd, MMMM Do YYYY, h:mm:ss a'}}

在我的一个控制器中 -

$scope.profile.eventStart = moment(data.start).format('YYYY-MM-DD hh:mm a');

即使我设置了时区,我也没有在这两种情况下都进行任何更改。我错过了什么吗?

5 个答案:

答案 0 :(得分:4)

设置后无法更改常量。由于注入不依赖于module.constant或模块值,这应该可以解决问题:

angular.module('myapp').value('angularMomentConfig', {
    timezone: 'Europe/London' // e.g. 'Europe/London'
});

答案 1 :(得分:1)

timezone参数是可选的。如果省略它,它将自动使用本地计算机的时区。这是moment.js和JavaScript Date对象的默认行为。

答案 2 :(得分:1)

从版本1.0.0-beta.1开始,可以使用 amMoment 服务设置时区。只需注入amMoment服务并调用changeTimeZone:

amMoment.changeTimezone('Europe/London');

答案 3 :(得分:0)

我也有同样的问题。

这是解决这个问题的方法。

您需要在项目中包含moment-timezone.js v0.3.0或更高版本,否则自定义时区功能将无法使用。

Documentation here

答案 4 :(得分:-1)

app.run(['amMoment',
    function (amMoment) {
        amMoment.changeTimezone('Europe/Paris');
    }
]);