我創建了以下過濾器來轉換MySQL日期並調整時區相對於UTC的時間。AngularJS自定義過濾器無法在iOS和IE上工作
angular.module('HIS')
.filter('dateToISO', function() {
return function (input) {
var offset = new Date().getTimezoneOffset();
var date = new Date(input);
date.setTime(date.getTime()-offset*60000);
return date.toISOString();
};
});
然後,我使用過濾器將日期轉換爲我的首選格式並在HTML中顯示它們,如下所示。 (我已經改變了角插標籤[[ ]]
,以避免與Laravel的刀片語法{{ }}
衝突)
[[prescription.patient.first_name]] [[prescription.patient.last_name]]<br>
[[prescription.created_at | dateToISO | date:"EEEE, d/M/yy h:mm a"]]
這工作正常,除了IE的所有桌面瀏覽器。此外,這不適用於iOS(Safari/Chrome)中的瀏覽器。
在桌面瀏覽器的工作,除了IE
不工作的iOS瀏覽器和IE瀏覽器。代之以顯示原始角碼。
重要:
當我在尋找,我發現,IE瀏覽器的問題,在角V1.3.3及以上得到解決。但是我正在使用v1.5.5,問題依然存在。在iOS瀏覽器上沒有關於這種情況的線索。任何人都可以解釋爲什麼發生這種情況以及如何解決這個問題?
提前致謝!
瀏覽器在開發工具中登錄到控制檯時會發生什麼? – sibbl
'RangeError:Number expected'在上面提到的過濾器中的匿名函數中,靠近'return date.toISOString();' –
根據MSDN:「如果objDate不包含有效日期,則會引發RangeError異常[調用toISOString ()]。「。也許你可以檢查offset,date.getTime()的值和你傳遞給setTime函數的整個值? – sibbl