2015-08-28 36 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. 检索时,请按照请求的参数发送时区,并相应地获取相应的日期。

小漫长的,但应该工作:-)