免费jqGrid 4.9.0 – 在MAC上的Safari上的日期格式

在Windows上工作时,所有主要4个浏览器(Safari,Chrome,IE和Firefox)上的日期格式选项都可以正常运行。

但是,在MAC机器上测试时,格式选项在Safari中失败(Firefox上的Firefox运行良好)。

我的格式选项是:

gridField.formatter = 'date'; gridField.formatoptions = {}; gridField.formatoptions['srcformat'] = 'U/1000'; gridField.formatoptions['newformat'] = 'm/d/YH:i:s'; 

在Safari中(仅在MAC上)将产生:NaN / NaN / NaN NaN:Nan:NaN。

知道如何克服这个问题吗?

谢谢,

问题如下。 免费的jqGrid使用与jqGrid 4.7类似的$.jgrid.parseDate函数的相同代码。 它在两种不同的情况下支持日期格式中的"u""U"用法。 第一种情况是使用"u""U" 而没有任何其他格式规范(例如, srcformat:"u" )。 这意味着jqGrid使用new Date(inputValue*1000)来解析输入值。 输入值如1418297439将使用newformat: "m/d/YH:i:s"显示为12/11/2014 11:30:39 newformat: "m/d/YH:i:s" 。 另一方面,您在输入数据中有1418297439000而不是1418297439 ,并且jqGrid没有针对该情况的确切格式化程序。

您在原始演示http://jsfiddle.net/OlegKi/ngm5rhgp/7/中使用格式srcformat: "U/1000" 。 这种格式( "U/1000" )根本不存在。 格式"U/1000"将以"U/""U."的相同方式解释"U.""U/BlaBla""U:H:i:s"或任何其他以u开头跟随分隔符。 因为输入数据看起来像1418297439000并且没有其他分隔符 (, / ,和其他一些)然后只会使用第一个格式化程序U ,但它现在将被解释为u格式化程序,这意味着毫秒。 u格式通常用于12/11/2014 11:30:39,123这样的格式,其中最后123部分是时间的毫秒部分。

似乎MAC上的Safari不允许创建日期作为new Date(1970, 1, 1, 0, 0, 1418297439000) ,它使用jqGrid和1418297439000作为输入数据和srcformat: "U/1000"

我建议你做的是修改输入数据和srcformat: "u"格式的用法 。 需要枚举所有输入数据项并将start_timeend_time属性分配到100 。 我在我的演示http://jsfiddle.net/OlegKi/ngm5rhgp/8/中使用了代码

 var mydata = [{...},{...}... {...}], n = mydata.length, item, i; for (i = 0; i < n; i++) { item = mydata[i]; item.start_time = Math.floor(item.start_time / 1000); item.end_time = Math.floor(item.end_time / 1000); } 

并将srcformat: "U/1000"替换为srcformat: "u" 。 如果没有"local" datatype值,则可以修改beforeProcessing回调中的数据。

更新 :为了简化自Unix Epoch(1970年1月1日00:00:00 GMT)以来的时间处理,如1418297439000 ,我在免费的jqGrid 新格式选项中引入srcformat: "u1000" 。 新演示http://jsfiddle.net/OlegKi/ngm5rhgp/9/使用未修改的输入数据,只使用srcformat: "u1000"而不是srcformat: "U/1000" 。 要使用它,必须使用GitHub中最新的免费jqGrid。