在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。
知道如何克服这个问题吗?
谢谢,
答案 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_time
和end_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。