2011-12-01 73 views
2

我使用的jqGrid和我的格子的定义是这样的:的jqGrid不排序当显示大纪元时间(自为毫秒)的日期

... 
colNames:['Type','Date','Message','User Name','Host'], 
colModel:[{name:'type',index:'type', width:100}, 
{name:'date',index:'date', sorttype:'date', formatter:'date', 
    formatoptions: {newformat:'d-M-Y'}, width:100}, 
{name:'log',index:'log', width:200}, 
{name:'username',index:'username', width:50}, 
{name:'host',index:'host', width:50}], 
... 

当调试我的未来数据的日期值之一(它是Number)如下:

1322550786997 

窗格显示它这样:

29-Nov-2011 

一切OK,直到这一点。但是,当我想对日期列进行排序时,它不会改变任何内容。

任何想法?

+0

哪种数据类型拥有1322550786997?它是“字符串”还是“数字”? – Oleg

+0

@ Oleg它是数字。 – kamaci

回答

4

问题是解码的Unix(formatoptions: {srcformat: 'U', newformat: 'd-M-Y'})日期1322550786997得到我们19-Dec-43879而不是29-Nov-2011。您更正日期的表示形式将是字符串"\/Date(1322550786997)\/"而不是数字1322550786997

the demo

enter image description here

修订:您还可以使用下面的自定义格式作为一种解决方法

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

它创建Date然后用原date格式将其转换格式为'd-M-Y'。请参阅here演示。

+0

感谢您的帮助,但我想我错过了什么。我从Java获得时间,我认为从时代开始的时间为毫秒。 – kamaci

+0

@kamaci:如果您从Java发布日期,您应该更好地使用ISO 8601日期格式(请参阅[这里](http://en.wikipedia.org/wiki/ISO_8601)和[这里](http:// www。 w3.org/TR/NOTE-datetime))。它是jqGrid使用的标准输入格式。 – Oleg

+0

@kamaci:您可以使用我在我的答案的** UPDATED **部分中描述的解决方法。 – Oleg