小编典典

从Ajax调用javascript日期到ASP.NET解析DateTime结果

ajax

介绍:

WebMethod在ASP.NET页面上有一个返回Person对象的页面。其中一个字段是Birthday这是一个DateTime性质。

Web方法

[WebMethod]
public static Person GetPerson()
{
     Person p = new Person() {
         Id = 1,
         Name = "Test",
         Birthday = new DateTime(1988, 9, 13)
     };

     return p;
}

如果使用进行呼叫,则会$.ajax()获得服务器与Person对象的响应。

阿贾克斯电话

// Class instance
var Ajaxcalls = function () {

}

_$.extend(Ajaxcalls, {
    GetPerson: function (label) {
        var self = label instanceof _$ ? label : $(label);

        _$.ajax({
            url: 'Default.aspx/GetPerson',
            type: "POST",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                console.log(JSON.stringify(data.d));
                self.html(new Date(Date.parse(data.d.Birthday)));
            }
        });
    }
});

结果:

{"__type":"AjaxTest.Classes.Person","Id":1,"Name":"Test","Birthday":"/Date(590104800000)/"}

问题

如何将Birthday[/ Date(590104800000)/] 解析为javascript / jQuery日期?我试过了,new Date(Date.parse(data.d.Birthday))但是给了我一个Invalid date


阅读 222

收藏
2020-07-26

共1个答案

小编典典

使用convertToJavaScriptDate() 为您执行此操作的功能:

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

convertToJavaScriptDate()函数接受\/Date(ticks)\/格式值,并以格式返回日期字符串MM/dd/yyyy
在内部,该convertToJavaScriptDate()函数使用表示pattern的正则表达式/Date\(([^)]+)\)/
exec()方法接受源日期值并测试该值是否匹配。的返回值exec()是一个数组。在这种情况下,结果数组(results[1])的第二个元素保存源日期的滴答声部分。

例如,如果源值\/Date(836418600000)\/然后results[1]836418600000
基于此刻度值,将形成一个JavaScript Date对象。Date对象具有一个构造函数,该构造函数接受自1970年1月1日以来的毫秒数。
因此,它dt保存一个有效的JavaScript Date对象。然后,
convertToJavaScriptDate()函数将日期格式设置为,MM/dd/yyyy并返回到调用方。

您可以使用convertToJavaScriptDate()如下所示的功能:

options.success = function (order) {
 alert("Required Date : " + convertToJavaScriptDate(order.RequiredDate) + ", Shipped Date : " + convertToJavaScriptDate(order.ShippedDate));
};

尽管上面的示例使用MM/dd/yyyy格式的日期,但是一旦构造了Date对象,您也可以使用其他格式。

参考:链接

2020-07-26