Javascript Ext JS:无论浏览器时区如何,都以UTC显示日期

Javascript Ext JS:无论浏览器时区如何,都以UTC显示日期,javascript,extjs,extjs5,Javascript,Extjs,Extjs5,在Ext JS网格中强制日期以UTC显示(并忽略浏览器本地时间)的最佳方式是什么 我的模型接收UTC格式的日期: "2014-06-24T00:00:00+00:00" 我的网格有一个日期列: Ext.define('MyApp.view.MyGrid', { store: MyApp.store.MyStore, columns: [ { xtype: 'datecolumn', text: 'Date',

在Ext JS网格中强制日期以UTC显示(并忽略浏览器本地时间)的最佳方式是什么

我的模型接收UTC格式的日期:

"2014-06-24T00:00:00+00:00"
我的网格有一个日期列:

Ext.define('MyApp.view.MyGrid', {
    store: MyApp.store.MyStore,
    columns: [
        {
            xtype: 'datecolumn',
            text: 'Date',
            dataIndex: 'date',
            format: 'Y-m-d H:i:sO'
        },
    ]
});
日期显示在浏览器本地时间中,例如:

2014-06-24 01:00:00+0100
但我想在UTC中显示它们

到目前为止,我找到的最佳解决方案是导入,并使用它:

{
    xtype: 'datecolumn',
    text: 'Date',
    dataIndex: 'date',
    renderer: function (value) {
        return moment.utc(value).format('YYYY-MM-DD HH:mm:ssZZ');
    }
}
哪一个具有预期的结果:

2014-06-24 00:00:00+0000

当然有更干净的方法吗?

我看不到内置的UTC支持,因此您可以例如扩展
日期列
并使用
时刻
来渲染日期。例如:

Ext.define('Ext.grid.column.UtcDate', {
    extend: 'Ext.grid.column.Date',
    alias: ['widget.utcdatecolumn'],
    alternateClassName: 'Ext.grid.UtcDateColumn',

    defaultRenderer: function(value){
        return moment.utc(value).format(this.format);
    }
});
然后只需使用
utcdatecolumn
而不是
datecolumn

Ext.define('MyApp.view.MyGrid', {
    store: MyApp.store.MyStore,
    columns: [
        {
            xtype: 'utcdatecolumn',
            text: 'Date',
            dataIndex: 'date',
            format: 'YYYY-MM-DD HH:mm:ssZZ'
        }
    ]
});

它在最新的ExtJs中出现。 使用
toutstring()
或其他可用的toUTC xxxx()方法

或者,您可以执行以下操作:

// convert to msec
// add local time zone offset 
// get UTC time in msec

utc = d.getTime() + (d.getTimezoneOffset() * 60000);