cou*_*zzi 17 javascript date timezone-offset angularjs
我希望显示相对于用户时区的日期.
我希望Angular有办法全局配置Date
过滤器来执行此操作 - 必须根据具体情况手动执行此操作感觉不对.
我的时间戳已经被包裹在一个timestamp()
功能(只需1000繁殖),但我不希望修改功能,如果我不具备对.
编辑:
我正在做这个,它有效,但如上所述,如果可能的话,我想把它设置得更高一级
$scope.timestamp = function (unix_time) {
var epoch = (unix_time * 1000);
var date = new Date();
var localOffset = (-1) * date.getTimezoneOffset() * 60000;
var stamp = Math.round(new Date(epoch + localOffset).getTime());
return stamp;
};
Run Code Online (Sandbox Code Playgroud)
小智 21
所以,由于角度1.4.x的变化,现在这是微不足道的.处理这个问题的正确方法是创建一个装饰器,它在运行之前改变内置日期过滤器.这很简单,不会对性能产生影响.
这是我用的.如果没有指定时区,它只会添加一个DEFAULT_TIMEZONE.只要没有给出其他时区,这就会将应用程序中的所有日期移动到GMT.
module.config(['$provide', function($provide) {
var DEFAULT_TIMEZONE = 'GMT';
$provide.decorator('dateFilter', ['$delegate', '$injector', function($delegate, $injector) {
var oldDelegate = $delegate;
var standardDateFilterInterceptor = function(date, format, timezone) {
if(angular.isUndefined(timezone)) {
timezone = DEFAULT_TIMEZONE;
}
return oldDelegate.apply(this, [date, format, timezone]);
};
return standardDateFilterInterceptor;
}]);
}]);
Run Code Online (Sandbox Code Playgroud)
Mar*_*die 10
从官方文件:
时区
请记住,Angular日期时间过滤器使用浏览器的时区设置.因此,相同的应用程序将显示不同的时间信息,具体取决于运行该应用程序的计算机的时区设置.Javascript和Angular目前都不支持使用开发人员指定的时区显示日期.
http://docs.angularjs.org/guide/i18n
级别"更高"可以创建一个包装类型(AKA类,...),您的函数作为构造函数.这应该在应用程序的入口点编码,以便可以在任何地方使用它.
归档时间: |
|
查看次数: |
25674 次 |
最近记录: |