Kendo网格未显示正确的时间

时间:2014-07-04 05:42:54

标签: mysql kendo-ui kendo-grid kendo-dataviz

我有一个kendo网格,我在一列中显示时间,如图enter image description here所示

但每当我使用编辑kendo按钮时间选择器更新时间时,它都不显示正确的时间,但如果我选择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或其他格式在kendo网格中显示mysql时间数据。

1 个答案:

答案 0 :(得分:0)

好的,我找到了答案,它正在发挥作用。首先kendo返回GMT日期格式,并以当地时间格式显示日期,您需要修改此类的剑道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); 
        });
    },

我相信这对每一个人都有用