【问题标题】:JSON date is series of numbers, not displayed correctly in bootgridJSON 日期是一系列数字,在 bootgrid 中未正确显示
【发布时间】:2017-01-18 01:10:32
【问题描述】:

我在 MVC ASP.NET 项目中使用 jquery 和 bootgrid。

使用实体框架,我得到了我想在网格中显示的数据,在数据库中看起来像这样:

1    Portal    2017-01-16 23:09:54.420    testFirstName testLastName testCompanyName
2    Portal    2017-01-14 14:37:33.750    John    Doe    Walmart

但是,当我将其转换为 Json 并将其传递回 bootgrid 时,JSON 看起来像

{"current":1,"rowCount":2,"rows":
[{"LeadId":1,"ScanDate":"\/Date(-62135571600000)\/","FirstName":"testFirstName","LastName":"testLastName","Company":"testCompanyName"},
{"LeadId":2,"ScanDate":"\/Date(-62135571600000)\/","FirstName":"John","LastName":"Doe","Company":"Walmart"}],"total":2}

ScanDate 值不正确。

在我的 bootgrid 视图中,我将列设置为:

<th data-column-id="ScanDate" data-formatter="date">Date Sent</th>

数据格式化如下:

return (date == null ? "" : date.substring(0, 10));

子字符串有效,因为我只看到上述 JSON 响应中数字的前 10 个字符。

为什么日期时间显示为数字?

我什至尝试将值转换为 JavaScript 中的日期

var convertDate = new Date(date);

但 convertDate 是未定义的,并且 convertDate.getDay / getHour() 是 NAN。

有什么想法吗?

【问题讨论】:

标签: jquery json jquery-bootgrid


【解决方案1】:

我的设置与您描述的相同 - ASP.NET MVC5、EF6、JsonResult 操作返回 JSON 和来自我的 Bootgrid 的 Ajax 调用。我的 C# 模型中转换为 JSON 的字段之一是 DateTime 类型。

我就是这样解决的:

安装 Moment.js 库以在 javascript 中处理日期(我一般也推荐它,而不仅仅是针对这种情况)。

在声明 Bootgrid 的 javascript 中添加转换器:

converters: {
    datetime: {
        from: function (value) { return moment(value); },
        to: function (value) { return moment(FormatJsonDateToJavaScriptDate(value)).format("DD.MM.YYYY"); }
    }
}

添加一个通用函数(我经常重复使用它)。我是从你的问题下的链接@NineBerry 得到的。

function FormatJsonDateToJavaScriptDate(value) {
    var pattern = /Date\(([^)]+)\)/;
    var results = pattern.exec(value);
    var dt = new Date(parseFloat(results[1]));
    return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
}

最后在视图本身中装饰这个列:

<th data-column-id="SomeDate" data-order="desc" data-converter="datetime">Some header Title</th>

它的作用是将“奇怪”日期解析/转换为可读日期,然后通过 Moment.js 发送并另外解析为我的语言环境,即 DD.MM.YYYY。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多