javascript - AngularJS 全局日期时区偏移量

标签 javascript angularjs date timezone-offset

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

我希望 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;
};

最佳答案

因此,由于 angular 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;
     }]);
}]);

关于javascript - AngularJS 全局日期时区偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21841413/

相关文章:

JavaScript:如何从数组中删除多个键的重复条目

java - 通过向上转换将 Java.sql.date 转换为 Java.util.date 安全吗?

java - QueryDSL:格式化字符串的 DateTimePath

javascript - 如何阻止内联 onclick 事件并稍后在自己的点击监听器中调用它?

javascript - CreateJS 针对 mc 范围问题

javascript - jQuery 延迟三秒后不起作用

javascript - 无法在数组上进行双向数据绑定(bind)

html - 如何使用 AngularJs 处理页眉和页脚

javascript - Ng-Bind 影响表头

多对多关系的 3 个表之间的 SQL 查询