0

我有一个 ajax 帖子,我从 sql 数据库中获取值。我在 sql 中的数据类型是 datetime 它返回的是:

Orderdate: "/Date(-62135578800000)/"

现在使用 date.js 我正在尝试执行以下操作:

orderdate = Date.parse(response.d[post].Orderdate);

orderdate.toString('MM/dd/yyyy')

但这不断出现此错误:

Uncaught TypeError: Cannot call method 'toString' of null 

我究竟做错了什么?我不明白:(

编辑:这是我的完整代码,

$.ajax({
    type: "POST",
    url: "../ajaxcalls.asmx/Test",
    data: "{id:'" + id + "'}",
    contentType: "application/json",
    dataType: "json",
    success: function (response) {
        for (var post in response.d) {
            orderdate = Date.parse(response.d[post].Orderdate);
            console.log(orderdate);
            console.log(response.d[post].Orderdate);
            console.log(orderdate.toString('MM/dd/yyyy'));
        }

    }

});
4

1 回答 1

4

您不能将 .NET JSON 日期实现直接传递给 JavaScript Date.parse();您需要提取自纪元以来的毫秒数并将其传递给Date构造函数。

var orderdate = new Date(parseInt(response.d[post].Orderdate.replace("/Date(", "").replace(")/",""), 10));

orderdate.toString('MM/dd/yyyy');

有关 ASP.NET 使用的日期表示背后的基本原理的更多信息,请参阅

JSON 的痛点之一是缺少日期/时间文字。许多人在第一次遇到 JSON 时会感到惊讶和失望。缺少日期/时间文字的简单解释(不管是否安慰)是 JavaScript 也从未有过:JavaScript 中对日期和时间值的支持完全是通过 Date 对象提供的。因此,大多数使用 JSON 作为数据格式的应用程序通常倾向于使用字符串或数字来表示日期和时间值。如果使用字符串,您通常可以期望它采用 ISO 8601 格式。相反,如果使用数字,则该值通常表示自纪元以来的通用协调时间 (UTC) 中的毫秒数,其中纪元定义为 1970 年 1 月 1 日午夜 (UTC)。再次,这只是一个约定,不是 JSON 标准的一部分。如果您正在与另一个应用程序交换数据,则需要查看其文档以了解它如何在 JSON 文字中编码日期和时间值。例如,Microsoft 的 ASP.NET AJAX 不使用上述两种约定。相反,它将 .NET DateTime 值编码为 JSON 字符串,其中字符串的内容是 /Date(ticks)/,其中 ticks 表示自纪元 (UTC) 以来的毫秒数。因此,1989 年 11 月 29 日凌晨 4:55:30,UTC 编码为“/Date(628318530718)/”。有关这种相当人为的编码选择背后的一些基本原理,请参阅 例如,Microsoft 的 ASP.NET AJAX 不使用上述两种约定。相反,它将 .NET DateTime 值编码为 JSON 字符串,其中字符串的内容是 /Date(ticks)/,其中 ticks 表示自纪元 (UTC) 以来的毫秒数。因此,1989 年 11 月 29 日凌晨 4:55:30,UTC 编码为“/Date(628318530718)/”。有关这种相当人为的编码选择背后的一些基本原理,请参阅 例如,Microsoft 的 ASP.NET AJAX 不使用上述两种约定。相反,它将 .NET DateTime 值编码为 JSON 字符串,其中字符串的内容是 /Date(ticks)/,其中 ticks 表示自纪元 (UTC) 以来的毫秒数。因此,1989 年 11 月 29 日凌晨 4:55:30,UTC 编码为“/Date(628318530718)/”。有关这种相当人为的编码选择背后的一些基本原理,请参阅 “在 ASP.NET AJAX 的 JSON 日期和时间字符串中。”

于 2013-04-29T20:44:04.530 回答