Ext JS:无论浏览器时区如何,都以UTC显示日期
Ext JS: Display dates in UTC regardless of browser timezone
在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显示它们
到目前为止,我找到的最好的解决方案是导入moment.js并这样使用它:{
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支持,因此您可以扩展datecolumn
并使用moment
来呈现日期。例子:
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中。使用toUTCstring()
或其他可用的toUTC xxxx()方法。
或者,可以这样做:
// convert to msec
// add local time zone offset
// get UTC time in msec
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
相关文章:
- 如何在时间标签和相同的类中以UTC格式重新格式化ISO 8601时间戳,并通过JavaScript根据用户区域设置和时区
- 每个页面都进入cookie以加快“返回”过程
- 如何使用javascript以操纵的UTC格式获取当前日期
- 如何在 JavaScript 中抑制前导 0 以生成格式正确的 URL?(所有尝试都生成了 typedef 错误)
- jQuery:如何检查以确保所有异步操作都已完成
- 如何在 javascript 中获取指定时区的一天的开始时间和结束时间(以 UTC 为单位)
- 为什么需要 CDATA,而不是在任何地方都以相同的方式工作
- 包装 HTML 标记以使所有标记都可单击
- 以 UTC 格式的 SQL 处理日期/时间
- 以毫秒 (UTC) 为单位获取当前日期(不使用字符串)
- 如果我的所有用户都有 AD 帐户,那么使用集成 Windows 身份验证来保护 .NET WebAPI 以供 JavaS
- 在 Node 中.js所有以回调作为输入参数的函数都是非块的
- UTC 时间不是以 24 小时格式显示的,并且在上午 12 点之后不正确
- 都是'sync'event和Backbone.sync以某种方式连接在一起——两者之间有什么区别
- 所有文件都以myme text/html发送,忽略服务器node.js上的头函数writeHead
- Ext JS:无论浏览器时区如何,都以UTC显示日期
- Heroku Toolbelt的Foreman每次都以Error: write EINVAL退出
- 任何时区的用户都以太平洋时间输入日期
- 每次都以相同的持续时间执行代码
- 以UTC +/-的格式获取UTC时区