我正在使用jqgrid 4.1.2版本,服务器将序列化的日期返回到JSON,如下所示"\/Date(1314443359000-0700)\/"
。
问题是jqgrid没有显示服务器日期时间,但是当我更改本地时区时显示的日期时间不同时,它也会根据本地时区显示日期时间。如何在jqgrid中显示服务器日期时间?
答案 0 :(得分:1)
我坚持和你一样的问题。 JQGrid只是想在这里变得聪明。而默认来自Microsoft的java脚本序列化程序是一个真正的罪魁祸首。您只需要以标准格式发送日期即可。这将像任何事情一样工作。通过here
很好地解释了更多细节因为,最简单的解决方案就是使用Json.net,解决问题的方法不会弄乱代码或在客户端进行日期时间的更改。
希望,回答对您有所帮助,如果需要进一步的详细信息,请告诉我。
答案 1 :(得分:0)
您所描述的是正确的行为。它与服务器中的同一时刻。如果我们都希望同时通过电话进行交谈,我们必须在我们的Outlook日历中放置本地时间,以便在同一时间准备好发言。
如果您需要其他日期转换实现,可以使用custom formatter。
更新:您可以定义myEditSerialize
功能,并使用if serializeEditData或serializeRowData。 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);
},...
]