【问题标题】:converting the milliseconds to date format for JQGrid将 JQGrid 的毫秒转换为日期格式
【发布时间】:2014-03-11 20:13:20
【问题描述】:

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

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

1394085600000,即返回的 json 数据,本质上应该是 03/06/2014

提前致谢

【问题讨论】:

  • 您能否将我们的问题附上您用于网格的输入数据的确切示例。重现问题的演示将是最好的。

标签: json date jqgrid


【解决方案1】:

我自己想出了解决方案 感谢@oleg 的输入 但问题是输入是毫秒,格式化程序 src 格式是“U”,它是 unix,毫秒/1000 将提供 Unix 中的单位
所以现在 {srcformat: 'U/1000', newformat:'Y/d/m'} 给了我正确的日期格式,但是 虽然有点意思 但仍然保持问题开放以获得合法答案

谢谢

【讨论】:

    【解决方案2】:

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

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

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

    更新:如果您的输入数据类似于1394085600000,并且如果您无法更改它,那么您可以使用调用“日期”格式化程序的自定义格式化程序:

    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)。因此我强烈建议不要使用srcformat: 'U/1000' 的hack。

    【讨论】:

    • 感谢 Oleg,您通过一些浅显易懂的方式了解事实,但不幸的是仍然不起作用
    • @MathewMGeorge:什么不起作用?我要求您发布您使用的测试数据。如果您另外发布网格定义(1-2 列就足够了),那么可以很容易地重现问题并修复它。
    • Sorry Oleg 我正在添加示例数据,但评论并被错误发布示例数据为 1394085600000,本质上它与 php 无关,因为在PHP 相反,它只是回显它收到的 json,谢谢
    • @tpeczek 你能想出一个解决方案吗,因为我发现你回答了一个类似的问题stackoverflow.com/questions/8212008/…
    • @MathewMGeorge:请参阅我在the demo 的回答的更新部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    相关资源
    最近更新 更多