介绍:
我WebMethod在ASP.NET页面上有一个返回Person对象的页面。其中一个字段是Birthday这是一个DateTime性质。
WebMethod
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对象的响应。
$.ajax()
阿贾克斯电话
// 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。
new Date(Date.parse(data.d.Birthday))
Invalid date
使用convertToJavaScriptDate() 为您执行此操作的功能:
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(ticks)\/
MM/dd/yyyy
/Date\(([^)]+)\)/
exec()
results[1]
例如,如果源值\/Date(836418600000)\/然后results[1]会836418600000。 基于此刻度值,将形成一个JavaScript Date对象。Date对象具有一个构造函数,该构造函数接受自1970年1月1日以来的毫秒数。 因此,它dt保存一个有效的JavaScript Date对象。然后, 该convertToJavaScriptDate()函数将日期格式设置为,MM/dd/yyyy并返回到调用方。
\/Date(836418600000)\/
836418600000
dt
您可以使用convertToJavaScriptDate()如下所示的功能:
options.success = function (order) { alert("Required Date : " + convertToJavaScriptDate(order.RequiredDate) + ", Shipped Date : " + convertToJavaScriptDate(order.ShippedDate)); };
尽管上面的示例使用MM/dd/yyyy格式的日期,但是一旦构造了Date对象,您也可以使用其他格式。
参考:链接