Փաստաթղթեր՝ https://docs.angularjs.org/api/ng/filter/date< /ա>
Plunker՝ https://plnkr.co/edit/q6KPNejv52SzewDlvGyu?p=preview
Կոդի հատվածը ստորև՝
var app = angular.module("app", []);
app.controller("ctrl", function($scope, $interval) {
$scope.message = "It works!";
$scope.dateStart = new Date();
$interval(function() {
$scope.dateNow = new Date();
}, 42)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.9/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
{{ message }} <br>
{{ dateNow - dateStart | date: 'hh:mm:ss:sss' }} <br>
{{ dateNow - dateStart | date: 'hh:mm:ss:sss' : 'UTC' }} <br>
</div>
- Ժամային գոտի չկա - ցուցադրում է
01
որպես ժամ: - Անցնելով
UTC
-ը որպես ժամային գոտի - ցուցադրվում է12
-ը որպես ժամ:
Իմ մյուս նախագծում ես հասկացա այս լուծումը... Դա հիմարություն է թվում, ես չեմ ուզում պատճենել-տեղադրել հիմար ծածկագիրը: Անշուշտ կա ավելի լավ միջոց:
(գուցե ես պարզապես պետք է օգտագործեմ պահը, փաթեթի չափն այստեղ այդքան էլ կարևոր չէ)
app.filter('mydate', function(){
return function(text, extra) {
// https://stackoverflow.com/a/39209842/775359
var date = new Date(text)
var userTimezoneOffset = date.getTimezoneOffset() * 60000;
var newdate = new Date(date.getTime() + userTimezoneOffset);
return pad(newdate.getHours(),2) + ":" + pad(newdate.getMinutes(),2) + ":" + pad(newdate.getSeconds(),2)
+ (extra ? ":" + pad(newdate.getMilliseconds(), 3) : "");
};
});
app.filter('pad', [function(){
return function(text, width) {
return pad(text, width)
};
}]);
function pad(text, width) {
text = text + ''; // converting to string because if we pass number it will fail
return text.length >= width ? text : new Array(width - text.length + 1).join('0') + text;
};
Լուծում չէ. AngularJS-ի գլոբալ Date-ի ժամային գոտու շեղումը (GMT-ը որպես լռելյայն սահմանելը դեռ ցուցադրում է որպես 12 ժամ)
Հնարավոր կրկնօրինակ՝ AngularJs ֆիլտրի ամսաթիվը ավելացվում է 2 ժամ (պատասխանված չէ)