Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS全局日期时区偏移量_Javascript_Angularjs_Date_Timezone Offset - Fatal编程技术网

Javascript AngularJS全局日期时区偏移量

Javascript AngularJS全局日期时区偏移量,javascript,angularjs,date,timezone-offset,Javascript,Angularjs,Date,Timezone Offset,我希望显示相对于用户时区的日期 我希望Angular能够全局配置Datefilter来实现这一点,但必须根据具体情况手动实现这一点是错误的 我的时间戳已经包装在一个timestamp()函数中(简单地乘以1000),但是如果不需要的话,我宁愿不修改该函数 编辑: 我正在这样做,它是有效的,但如上所述,如果可能的话,我想把这个级别设置得更高 $scope.timestamp = function (unix_time) { var epoch = (unix_time * 1000);

我希望显示相对于用户时区的日期

我希望Angular能够全局配置
Date
filter来实现这一点,但必须根据具体情况手动实现这一点是错误的

我的时间戳已经包装在一个
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;
};

您是否签出了
momentjs


还有角度时区,但我无法与该软件包()对话。

来自官方文档:

时区

请记住,角度日期时间过滤器使用时区设置 浏览器的一部分。因此,相同的应用程序将显示不同的时间 信息取决于所选计算机的时区设置 应用程序正在上运行。既不是Javascript也不是Angular 当前支持显示由指定时区的日期 开发商


级别“更高”可能是创建一个包装器类型(AKA class,…),将函数作为构造函数。这应该在应用程序的入口点进行编码,以便在任何地方都可以使用它

多亏了angular 1.4.x的变化,这一点现在变得微不足道了。正确的处理方法是创建一个装饰器,在运行内置日期过滤器之前对其进行修改。这非常简单,不会对性能产生影响

这是我用的。如果没有指定时区,它只添加一个默认的_时区。只要不指定其他时区,就可以将应用程序中的所有日期移动到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;
     }]);
}]);

我使用了momentjs,这很好,但在本例中,Angular除了处理时区之外,处理日期也很好。
一个包装类型(AKA class,…),函数作为构造函数。
您能在这里详细说明吗?你有一个例子吗?这不再有效。Angular的date$筛选器现在支持第三个参数“timezone”。该参数将采用“UTC”、“GMT”或类似以下指定的时区偏移量:“+0430”。回答库齐的问题,下一个要问的问题是,在没有时区的情况下,是否可以在某些配置中设置为始终应用“GMT”之类的值。