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

时间:2015-11-10 15:56:37

标签: jquery jqgrid free-jqgrid

在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/Y H:i:s';

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

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

谢谢,

1 个答案:

答案 0 :(得分:1)

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

您在原始演示http://jsfiddle.net/OlegKi/ngm5rhgp/7/中使用格式 srcformat: "U/1000" 。这种格式("U/1000")根本不存在。格式"U/1000"将以与"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)日期,该日期使用带有1418297439000的jqGrid作为输入数据和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。