2

我正在尝试将 DateTime 加载到 KendoUI DatetimePicker。但它显示为 /Date(1381964400000)/。我需要得到它就像 2013 年 10 月 17 日一样

这是我的代码

日期时间选择器:

@(Html.Kendo().DatePicker().Name("invDate")

加载日期时间的脚本来控制

$("#invLoad").click(function (e) {
            $.ajax({
                url: "@Url.Content("Invoice/ItemHeaderByTrnKy")",
                data: { trnNo: $('#trnNo').val() },
                dataType: "Json",
                type: "POST",
                success: function (data) {
                    if (data != null) {

                        $("#invDate").val(data.TrnDt);

                    }
                    else {
                        ClearAll();
                    }
                },
                error: function (e) {
                    ClearAll();
                }
            });
4

1 回答 1

1

第一个选项是尝试将字符串解析为 JavaScriptDate对象,然后将该对象传递给kendoDatePicker小部件:

success: function (data) {
    if (data) {
        var dateval = parseInt(data.TrnDt.src.replace(/\/Date\((\d+)\)\//, "$1"));
        if (!isNaN(dateval)) {
            var d = new Date(dateval);
            $("#invDate").data("kendoDatePicker").value(d);
    } else {
        ClearAll();
    }
},

脚步:

  1. 从字符串中提取数值data.TrnDt.src.replace(/\/Date\((\d+)\)\//, "$1")并解析为整数。
  2. 创建一个Date对象
  3. Date对象传递给kendoDatePicker'svalue()函数。

虽然这主要是有效的,但结果可能并不完全符合您的预期。.NET JSON 编码可能会产生一个本地时间偏移量,而Date()构造函数需要一个值作为 UTC 偏移量,然后转换为本地时间。因此,您的输出将根据服务器的时区和客户端的时区偏移几个小时。

在我的客户端上,解析您提供的日期值会得到Thu Oct 17 2013 09:00:00 GMT+1000. 这告诉我您可能在 GMT+0100 时区之一运行。

解决此问题的唯一可靠方法是第二种选择:将所有 Date 值作为可以由Date()构造函数解释的字符串返回。

如果您dd MMM yyyy在服务器上格式化日期值并将结果字符串传递给,new Date()那么您将获得您期望的日期值。如果您只是通过return Json(result);ASP 控制器返回一个对象,实现此目的的最简单方法是向您的对象添加一个翻译属性:

public string strTrnDt { get { return TrnDt.ToString("dd MMM yyyy"); } }

然后你的代码变成:

success: function (data) {
    if (data) {
        var d = new Date(data.strTrnDt);
        $("#invDate").data("kendoDatePicker").value(d);
    } else {
        ClearAll();
    }
},

或者更简单:

success: function (data) {
    if (data) {
        $("#invDate").val(data.strTrnDt);
    } else {
        ClearAll();
    }
},
于 2013-10-17T07:13:36.580 回答