2015-08-28 65 views
1

呈現JavaScript/ExtJS Date對象時,日期始終相對於瀏覽器。禁用ExtJS中的時區轉換

例如,使用IST分區瀏覽器將時間戳4102338600000渲染爲'Thu Dec 31 2099 00:00:00 GMT+0530 (India Standard Time)',並且在EST分區瀏覽器中將少一天時間。

我試圖從網上的文章像抵消時區等方式,但沒有看到直截了當的選擇。

我們的應用程序需要統一的日期,比如說GMT/UTC /其他格式,而不考慮時區。

在應用程序代碼,場所100的,下面是用於呈現日期:

format : 'd-M-Y', 

有什麼做同樣的事情,但與UTC,而不是本地的轉換?

回答

1

使用toUTCString

var date = new Date(4102338600000); 
console.log(date.toUTCString()); 
"Wed, 30 Dec 2099 18:30:00 GMT" 

UPDATE

Ext.Date.format回報當地日期字符串表示,確實如此。似乎沒有一種開箱即用的方式使其返回UTC日期。你就可以欺騙這種方式雖然:

var ms2UTCDate = function(ms) { 
    var date = new Date(ms); 
    return new Date(date.valueOf() + 60000 * date.getTimezoneOffset()); 
} 
console.log(Ext.Date.format(ms2UTCDate(4102338600000), 'Y-m-d')); 
2099-12-30 

這招可以燒入Ext.Date.format如下(不這樣做,除非你確信你不需要原來的行爲!):

var originalExtDateFormat = Ext.Date.format; 
Ext.Date.format = function(date, format) { 
    if (date instanceof Date) { 
     date = new Date(date.valueOf() + 60000 * date.getTimezoneOffset()); 
    } 
    return originalExtDateFormat.call(this, date, format); 
} 
+0

嗨德雷克,更新與實際關注的問題,請告知。 –

+0

答覆已更新。 – Greendrake

+0

太棒了。這將照顧在屏幕場景中呈現它。你能否考慮遵循一個,讓我知道這個方法? 1.日期字段是表單2的一部分。每次我們呈現它時,它都會更新表單的值,並保存到服務器。 3.嘗試再次訪問表單時,即使沒有手動更改,它也會獲得更新的表單而不是原始表單。 –

1

也許你可以做如下:

  1. 發送時間戳服務器的時區的詳細信息。
  2. 在服務器端,根據時區,獲取保存的UTC日期。
  3. 檢索時,請按照請求的參數發送時區,並相應地獲取相應的日期。

小漫長的,但應該工作:-)