我正在尝试将自定义渲染器添加到Bryntum Ext Gantt图表中。
我有在当地时区显示的日期,但我希望在UTC日期显示它们,因为这是数据源用于向用户显示日期(它与浏览器时区无关)的内容来源申请。
这里的帖子让我朝着正确的方向前进(根据我的测试似乎是我需要的):Why does ExtJS subtract a day when formatting a date?
如何将链接的解决方案实现到自定义渲染器?
我试过这个并且列是空白的:
{
xtype:'startdatecolumn',
sortable: false,
text: 'Start',
dataIndex: 'StartDate',
renderer: function (v, m, r) {
return Ext.util.Format.date(Ext.Date.parse(v, "Y-m-d"), "m-d-Y");
}
}
也尝试了这个,列是空白的:
{
xtype:'startdatecolumn',
sortable: false,
text: 'Start',
dataIndex: 'StartDate',
renderer: function (v) {
var dt = Ext.Date.parse(v, "Y-m-d");
Ext.util.Format.date(dt, "m-d-Y");
return dt;
}
}
使用此格式,它以本地时区显示日期(除非设置为UTC,否则不正确)。
{
xtype:'enddatecolumn',
dataIndex: 'EndDate',
sortable: false,
text: 'End'
}
columns : [
{
xtype : 'treecolumn',
header: 'Tasks',
sortable: true,
dataIndex: 'Name',
width: 200,
field: {
allowBlank: false
},
renderer : function(v, meta, r) {
if (!r.data.leaf) meta.tdCls = 'sch-gantt-parent-cell';
return v;
}
},
{
xtype : 'startdatecolumn'
},
{
//hidden : true,
xtype : 'enddatecolumn'
},
答案 0 :(得分:2)
使用此功能修复:
function niceDate (v, m, r) {
var dt = padStr(1 + v.getMonth()) +
'-' +
padStr(v.getDate()) +
'-' +
padStr(v.getFullYear());
return dt;
}
function padStr(i) {
return (i < 10) ? "0" + i : "" + i;
}
并在列渲染器中:
{
xtype:'startdatecolumn',
sortable: false,
text: 'Start',
dataIndex: 'StartDate',
renderer: niceDate
}
解析xml时,我使用带有以下时间戳的开关函数:
case 'timestamp':
if(!empty(v))
v = new Date(parseInt(v));
break;
这似乎可以将“日期”对象可靠地提供给ext.js,并且使用渲染器渲染列以匹配我们的源日期格式。