为angular.js应用程序强制执行时区

时间:2014-09-01 09:14:38

标签: javascript angularjs datetime timezone

我想为angular.js应用程序使用一个单独的时区。我知道angular.js目前使用浏览器时区设置进行日期格式化,但我想覆盖此设置,以便我可以为用户强制执行特定的时区,以便它不依赖于浏览器设置。 / p>

这是一个有问题的业务应用程序,因此不需要用户特定的时区。一切都发生在公司指定的时区,这就是为什么我想为每个用户强制执行它。数据以UTC格式保存,但需要在每个用户的公司时区中显示,而不依赖于用户位置/区域设置/浏览器设置。

我有什么方法可以达到这个,任何人都知道吗?如果有的话,我会非常感激地指出我这样做的正确方法:)到目前为止,我已经没有运气了。

2 个答案:

答案 0 :(得分:2)

您可以使用timezone.jsmoment.js等库。我成功地使用了时区,我听说过moment.js工作得很好。您可能想要建立一个注射工厂..

angular.module('date', [])
.config(function () {
    timezoneJS.timezone.zoneFileBasePath = '/tz';
    timezoneJS.timezone.init();
})
.service('dateConverter', function () {
    return {
        toDisplayDate: function (utcDateIn) {
            return new timezoneJS.Date(utcDateIn, 'America/Los_Angeles')
        }
    }
});

这只是我的头脑,但它是你可能需要做的一个例子 - 将日期从原生JS转换为图书馆日期。

答案 1 :(得分:0)

很抱歉,但无法更改JavaScript Date对象的时区行为。它将始终使用其运行的计算机的时区。

您可以做的最好的事情是one of the libraries listed hereStephen's answer显示了如何将其中一个集成到Angular中。

另外,当你说'#34;不需要用户特定的时区时,我会非常仔细地考虑"。有时,情况确实如此,但很少见。通常,公司在多个时区都有位置,或者他们有旅行的员工,或者他们与不同时区的客户或合作伙伴进行互动。

此外,如果您说的是真的 - 用户总是在公司的单个时区,那么已经已经成为他们计算机的本地时区吗?如果是这样,那就没那么多了。

如果您有其他时区的用户,但希望他们使用公司的主要时区,那么这将需要其中一个库。但请仔细考虑其影响。根据用户的距离,即使他们当前的日期可能与公司的日期不同。