我有一个剑道网格,我在一列中显示时间,如图 所示。
但每当我使用编辑剑道按钮时间选择器更新时间时,它不会显示正确的时间,尽管如果我选择 5:12 AM,它会正确保存在数据库中,但在更新时它不会显示正确的时间。有人写过在模型定义中使用 parse
函数
parse: function (d) {
$.each(d, function (idx, elem) {
elem.event_time = kendo.parseDate(elem.event_time, "yyyy-mm-ddThh:mm:ss.fffz");
});
return d;
}
然后使用 {0:hh:mm tt} 格式化列。
columns : [
...
{
field : "date",
title : "Date",
format: "{0:hh:mm tt}"
} ,
...
]
但它仍然不起作用,它返回网格的第一个事件时间,甚至在页面加载时它也不起作用。如何以 utc 或其他格式在剑道网格中显示 mysql 时间数据。
最佳答案
好的,我找到了答案并且它正在运行。首先 kendo
返回 GMT
日期格式并以本地时间格式显示日期,您需要像这样修改 kendo parse
函数:
parse : function(response) {
$.each(response, function(idx, elem) {
if (elem.event_time && typeof elem.event_time == "string") {
var d=new Date(Date.parse(elem.event_time));
var utcdate = new Date(d.getTime() + (d.getTimezoneOffset()*60000));
elem.event_time = new Date(elem.event_time).toISOString();
}
});
return response;
},
并将parameterMap更改为
parameterMap : function(options, operation) {
if(operation == "update") {
var d=new Date(Date.parse(options.models[0].event_time));
var utcdate = new Date(d.getTime() + (d.getTimezoneOffset()*60000));
options.models[0].event_time = utcdate;
return { event : options.models[0] };
}
}
可能你还需要添加
save: function(response) {
dataSource.fetch(function() {
var row = dataSource.at(0);
var d=new Date(Date.parse(row.event_time));
//To convert to UTC datetime by subtracting the current Timezone offset
var utcdate = new Date(d.getTime() + (d.getTimezoneOffset()*60000));
row.set("event_time", row.event_time);
});
},
我相信这对每个人都有效
关于mysql - Kendo grid 没有显示正确的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24567413/