将毫秒转换为JQGrid的日期格式

时间:2014-03-11 20:13:20

标签: json date jqgrid

我的Jqgrid的数据源是一个返回json的php 返回的json中的日期约束以毫秒为单位 我想将其转换为常规日期格式 我试图找到一个解决方案,一个真正接近解决方案的解决方案是[下面给出的] JQ网格日期格式

formatter:'date',formatoptions:{srcformat:'U',newformat:'d / m / Y'} 但仍然没有解决我的问题,因为日期不是正确的 24/10/146 这根本不是正确的日期 期待一些有价值的修复或建议

1394085600000 这是返回的json数据应该基本上 03/06/2014

提前致谢

2 个答案:

答案 0 :(得分:4)

有很多方法可以解决这个问题。源格式srcformat: 'U'表示(与jqGrd使用的其他格式一样)PHP格式。从PHP 5.2.2开始,它支持"u"格式,但它意味着微秒μs)而不是毫秒ms)您使用的(例如,请参阅here)。因此,输入数据应该是整数或浮点值,并且由srcformat: 'U'成功处理1/1000毫秒。 jqGrid解析srcformat: "U"格式的内容将从以下(参见here)代码行中清楚显示

if( !isNaN( date - 0 ) && String(format).toLowerCase() === "u") {
    timestamp = new Date( parseFloat(date)*1000 );
}

因此,您只需调整用作srcformat: "U"的输入值。

更新:如果您的输入数据与1394085600000类似,如果您无法更改,那么您可以使用自定义格式化程序调用" date"格式化器:

formatter: function (cellval, opts, rowObject, action) {
    return $.fn.fmatter.call(
              this,
              "date",
              new Date(cellval),
              $.extend({}, $.jgrid.formatter.date, opts),
              rowObject,
              action);
}

请参阅使用它的the demo

更新2: Free jqGrid fork支持新格式选项:srcformat: "u1000",用于转换1394085600000"03/06/2014"等长整数格式的日期。因此,要解决问题,应该只升级到当前版本的免费jqGrid。请参阅the demothe answer

我必须警告伪格式srcformat: 'U/1000'的用法。 jqGrid(既不是旧的也不是新的)支持格式。它可以用作显示只有日期的黑客,但其他功能将无法正常工作(编辑,过滤,排序等)或甚至无法在某些网页上阅读浏览器(参见the question)。因此,我严格建议不要使用hack whith srcformat: 'U/1000'

答案 1 :(得分:4)

我自己想出了解决方案 感谢@oleg的输入 但问题是输入是毫秒,格式化程序src格式是" U"这是unix和毫秒/ 1000将在Unix中提供单位 至于现在 {srcformat:' U / 1000',newformat:' Y / d / m'} 给了我正确的日期格式但是 虽然它没有意义 但仍然保持问题的正确答案

感谢