【发布时间】:2013-12-30 03:11:39
【问题描述】:
我有这个日期:1386800070703。假设它是 UTC。
如何从角度判断它是哪个时区以及我希望它显示在哪个时区?
我目前正在使用 tihs,它只在没有任何时区信息的情况下进行转换:{{1386800070703 | date:'d MMMM yyyy'}}
并且希望能够在日期右侧显示时区。
【问题讨论】:
标签: angularjs
我有这个日期:1386800070703。假设它是 UTC。
如何从角度判断它是哪个时区以及我希望它显示在哪个时区?
我目前正在使用 tihs,它只在没有任何时区信息的情况下进行转换:{{1386800070703 | date:'d MMMM yyyy'}}
并且希望能够在日期右侧显示时区。
【问题讨论】:
标签: angularjs
使用元素Z
'Z': 4 digit (+sign) representation of the timezone offset (-1200-+1200)
{{1386800070703 | date:'d MMMM yyyy Z'}}
【讨论】:
这是我写的一个指令:
angular.module('CommonDirectives', []).directive('adjustTimezone', ['$filter', function ($filter) {
return {
restrict: 'A',
scope: {
adjustTimezone: '@'
},
link: function ($scope, element, attrs) {
var date = new Date(attrs.adjustTimezone);
date.setMinutes(date.getMinutes() - date.getTimezoneOffset());
element.text($filter('date')(date, attrs.filter));
}
}
}]);
这是你如何使用它:
<span data-adjust-timezone="{{date.MilitaryTime}}" data-filter="EEEE, MMMM d, y h:mm a"></span>
【讨论】:
在 AngularJS (1.3.0) 的下一个版本中,您可以通过这种方式指定时区:
{{someDate | date:'d MMMM yyyy Z' : 'UTC'}}
目前,仅支持 UTC,您可以在文档中看到:https://code.angularjs.org/1.3.0-rc.2/docs/api/ng/filter/date
你可以在这里玩:Plunker example
请注意,时区将显示为本地时间,即使另有指定。
【讨论】:
1.4.0-rc.0 AngularJS 也支持其他时区。例如,要获取日本标准时间,您可以使用以下命令:{{someDate | date: 'MMM d, y H:mm:ss Z' : '+0900'}}