0
我們的應用程序的用戶必須選擇他們想要工作的時區。這是因爲他們可能專門爲某些其他時區的客戶工作。是否有可能有角度使用不同於瀏覽器的時區?
然後將應用程序的日期存儲在UTC中。
當以本地日期的形式顯示utc日期時,Javascript會採用瀏覽器的時區偏移量,這不是我想要的。
對於顯示日期,我有一個過濾器。它需要因瀏覽器而應用的偏移量並將其刪除。然後應用用戶定義的偏移量。這適用於顯示值。
示例可能是:用戶位於UTC + 03:00,但他在應用程序中的設置是UTC-4:00。 在數據庫中有一個6am的UTC值。期望的顯示值是6-4 = 2am。這是通過消除由於他的瀏覽器應用的偏移量(-3),然後應用其設置的偏移來實現的。
function standardDateFilterInterceptor(date, format, timezone) {
if (timezone === "agent") {
if (date !== null && date !== undefined) {
var momentDate = moment(date.toString(), ["YYYY-MM-DD HH:mm:ss"]);
if (momentDate.isValid()) {
date = momentDate.toDate();
let offset = date.getTimezoneOffset();
if (offset !== null && offset !== undefined) {
offset = offset * 60000 * (-1);
const dateWithOffset = new Date(date.getTime() + offset);
date = dateWithOffset;
}
}
}
if (agentTimeZoneOffset !== null && !angular.isUndefined(agentTimeZoneOffset)) {
timezone = agentTimeZoneOffset;
}
}
return originalFilter.apply(this, [date, format, timezone]);
}
對於顯示值這工作,但我沒有找到一種方法來更新值。樣本中的調整值(2am)將在範圍內並覆蓋早上6點的原始值。我可以看到,當我將值更改爲3,然後回到2.是否有辦法處理這個問題?就像控制dom元素更改時在範圍中設置的內容一樣。