我正在使用日期过滤器以特定格式呈现unix时间戳。我注意到过滤器会将当地时区添加到输出中。
有没有办法简单地输出确切的时间戳,而不添加任何时区信息?
输入:
talk.content.date_and_time = 1400167800
(是05/15/14 @ 3:30:00 pm UTC)
代码:
{{talk.content.date_and_time*1000 | date:'dd-M-yyyy H:mm Z'}}
输出:
15-5-2014 17:30 +0200
如何输出15:30而不是17:30?
答案 0 :(得分:82)
由于版本1.3.0
AngularJS引入了额外的过滤器参数timezone
,如下所示:
{{ date_expression | date : format : timezone}}
但在版本1.3.x
中,只有支持的时区为UTC
,可以按如下方式使用:
{{ someDate | date: 'MMM d, y H:mm:ss' : 'UTC' }}
由于版本1.4.0-rc.0
AngularJS也支持其他时区。我没有测试所有可能的时区,但这里有例如你如何在日本标准时间(JSP,GMT +9)获得约会:
{{ clock | date: 'MMM d, y H:mm:ss' : '+0900' }}
Here您可以找到AngularJS日期过滤器的文档。
注意:这仅适用于Angular 1.x
答案 1 :(得分:27)
' Z'是什么增加了时区信息。至于输出UTC,这似乎是一些混乱的主题 - 人们似乎倾向于moment.js。
借用这个answer,你可以在没有moment.js的情况下做这样的事情:
<强>控制器强>
var app1 = angular.module('app1',[]);
app1.controller('ctrl',['$scope',function($scope){
var toUTCDate = function(date){
var _utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
return _utc;
};
var millisToUTCDate = function(millis){
return toUTCDate(new Date(millis));
};
$scope.toUTCDate = toUTCDate;
$scope.millisToUTCDate = millisToUTCDate;
}]);
<强>模板强>
<html ng-app="app1">
<head>
<script data-require="angular.js@*" data-semver="1.2.12" src="http://code.angularjs.org/1.2.12/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div ng-controller="ctrl">
<div>
utc {{millisToUTCDate(1400167800) | date:'dd-M-yyyy H:mm'}}
</div>
<div>
local {{1400167800 | date:'dd-M-yyyy H:mm'}}
</div>
</div>
</body>
</html>
这里plunker与它一起玩
另请注意,使用此方法,如果您使用&#39; Z&#39;从Angular的日期过滤器中,它似乎仍将打印您当地的时区偏移量。
答案 2 :(得分:0)
答案 3 :(得分:0)
我刚刚为我的应用程序使用了getLocaleString()函数。它应该调整语言环境的常用时间格式,所以没有+0200等。当然,控制字符串宽度的可能性会更小。
var str = (new Date(1400167800)).toLocaleString();