AngularJS — UTC’den Yerel Tarih Saate Dönüştürme

Yakın zamanda, bir AngularJS uygulamasında görüntülenmek üzere UTC tarihlerini yerel tarihlere dönüştürmeyle ilgili bir sorunla karşılaştım. ASP.NET Web API, arka uç olarak kullanılıyordu ve “yyyy-MM-ggTHH: mm: ss” biçiminde (ör. 2020–10–22T00: 11: 31) tarih döndürüyordu.
Biraz araştırma yaptıktan sonra, tarihin sonunda UTC saatini belirtmek için bir ‘Z’ olması gerektiğini buldum (ayrıntılı bilgi için wikipedia’daki ISO 8601 formatına bakınız).
Angular tarih filtresinin, tarih doğru biçimlendirilmişse (‘Z’ son ekiyle) UTC’yi otomatik olarak yerel saate dönüştürebilir.
Sorunu çözmek için, angular tarih filtresini saran ve giriş tarihinin dönüştürmeden ve biçimlendirmeden önce bir “Z” sonunda olmasını sağlayan basit bir filtre oluşturdum.
AngularJS UTC’yi Yerel Tarih Saate Dönüştürme
(function () {
'use strict';
angular
.module('app')
.filter('utcToLocal', Filter);
function Filter($filter) {
return function (utcDateString, format) {
// return if input date is null or undefined
if (!utcDateString) {
return;
}
// append 'Z' to the date string to indicate UTC time if the timezone isn't already specified
if (utcDateString.indexOf('Z') === -1 && utcDateString.indexOf('+') === -1) {
utcDateString += 'Z';
}
// convert and format date using the built in angularjs date filter
return $filter('date')(utcDateString, format);
};
}
})();
UTC’den Yerel Zaman Filtresine dönüştürme örnek kullanımı
UTC'den dönüştürülen yerel tarih ve saat: {{vm.myUtcDate | utcToLocal:'dd.MM.yy - hh.mm a'}}