忽略时区Angularjs

时间:2014-01-15 09:39:28

标签: angularjs angularjs-filter

是否有更好的方法可以忽略Angularjs中的时区:

“2014-01-18 14:30:00”而不是“2014-01-18 15:30:00”

function Scoper($scope) {
    $scope.datum = "2014-01-18T14:30:00Z";
}

<div ng:app ng:controller="Scoper">
    DateTime  <br />
    Angular: {{datum | date:'yyyy-MM-dd HH:mm:ss'}} <br />
</div>

http://jsfiddle.net/samibel/2rMXJ/

3 个答案:

答案 0 :(得分:18)

我正在试验同样的问题一段时间。日期过滤器有一个时区可能的参数,我认为应该是首选解决方案,而不是制作自己的过滤器并附加它。所以,这对我有用:

{{ someAcceptedDateFormat | date : 'shortTime' : 'UTC' }}

答案 1 :(得分:13)

我找到了这个答案:Why does angular date filter adding 2 to hour?

这是example

只需管道另一个过滤器:

app.filter('utc', function(){

  return function(val){
    var date = new Date(val);
     return new Date(date.getUTCFullYear(), 
                     date.getUTCMonth(), 
                     date.getUTCDate(),  
                     date.getUTCHours(), 
                     date.getUTCMinutes(), 
                     date.getUTCSeconds());
  };    

});

在您的模板中:

<span>{{ date | utc | date:'yyyy-MM-dd HH:mm:ss' }}</span>

答案 2 :(得分:2)

我有解决方案:

app.filter('timezone', function(){

 return function (val, offset) {
        if (val != null && val.length > 16) {
    return val.substring(0, 16)
}    
return val;
    };
});

模板:

 <span>{{ date | timezone | date:'yyyy-MM-dd HH:mm:ss' }}</span>

http://jsfiddle.net/samibel/n4CuQ/