jqgrid根据时区显示不同的日期时间

时间:2011-09-01 03:11:08

标签: jqgrid

我正在使用jqgrid 4.1.2版本,服务器将序列化的日期返回到JSON,如下所示"\/Date(1314443359000-0700)\/"

问题是jqgrid没有显示服务器日期时间,但是当我更改本地时区时显示的日期时间不同时,它也会根据本地时区显示日期时间。如何在jqgrid中显示服务器日期时间?

3 个答案:

答案 0 :(得分:1)

我坚持和你一样的问题。 JQGrid只是想在这里变得聪明。而默认来自Microsoft的java脚本序列化程序是一个真正的罪魁祸首。您只需要以标准格式发送日期即可。这将像任何事情一样工作。通过here

很好地解释了更多细节

因为,最简单的解决方案就是使用Json.net,解决问题的方法不会弄乱代码或在客户端进行日期时间的更改。

希望,回答对您有所帮助,如果需要进一步的详细信息,请告诉我。

答案 1 :(得分:0)

您所描述的是正确的行为。它与服务器中的同一时刻。如果我们都希望同时通过电话进行交谈,我们必须在我们的Outlook日历中放置本地时间,以便在同一时间准备好发言。

如果您需要其他日期转换实现,可以使用custom formatter

更新:您可以定义myEditSerialize功能,并使用if serializeEditDataserializeRowData。 Th可以定义如下

var myEditSerialize = function (data) {
    var obj = $.extend({}, data);
    obj.RolloutTermin = jQuery.datepicker.parseDate('dd.mm.yy', data.RolloutDate);
    if (Date.isInstanceOfType(obj.RolloutDate)) {
        obj.RolloutDate= '\/Date(' + obj.RolloutDate.getTime() + ')\/';
    }
    return JSON.stringify(obj);
}

在示例中,我从“RolloutDate”列中进行日期序列化,以便它将转换为服务器端的DateTime。如果你直接使用Sys.Serialization.JavaScriptSerializer.serialize(data),那么也可以。我更喜欢使用json2.js中的JSON.stringify函数。

答案 2 :(得分:0)

这项工作:

colModel:[
...,sorttype:"date",formatter: function (cellval, opts) {
                    var date = new Date(cellval);
                    opts = $.extend({}, $.jgrid.formatter.date, opts);
                    return $.fmatter.util.DateFormat("", date, 'd-M-Y h:i:s', opts);
                },...
]