فرض کنید شی DateTime را از SQL Server بازیابی کرده ایم و آن را از طریق JSON (با استفاده از $ .ajax) به Javascript منتقل می کنیم. حالا چنانچه بخواهیم مقدار دریافت شده را تبدیل کنیم راه حل چیست ؟
روش اول
قطعه کدی که در زیر مشاهده می کنید توسط برنامه کامپایلر به جهت تست آزمایش شده و خروجی صحیح مدنظر را بدست آورد.
function toDateFromJson(src) { return new Date(parseInt(src.substr(6))); }
روش دوم
می توانید از کتابخانه regex استفاده کنید :
var msDateRegex = /"\\\/Date\((-?\d+)\)\\\/"/g; var msDateJsonConverter = function(data) { return JSON.parse($.trim(data.replace(msDateRegex, '{"__date":$1}')), function(key, value) { return value && typeof value.__date == "number" ? new Date(value.__date) : value; }); }; $.ajaxSetup({ converters: { "text json": msDateJsonConverter } });
روش سوم
این به این دلیل است که JSON به طور استاندارد قالب DateTime ندارد – توسعه دهندگان آزاد هستند که آن را همانطور که می خواهند علامت گذاری کنند.از کد زیر استفاده کنید :
var converted = eval(original.replace(/\/Date\((\d+)\)\//gi, 'new Date($1)'));
روش چهارم
این قطعه کد را امتحان کنید.
function (val) { var reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/; var reMsAjax = /^\/Date\((d|-|.*)\)[\/|\\]$/; if (val)) { var a = reISO.exec(val); if (a) { val = new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6])); return val; } a = reMsAjax.exec(val); if (a) { var b = a[1].split(/[-+,.]/); val = new Date(b[0] ? +b[0] : 0 - +b[1]); return val; } } return val; }
کدهای بیشتر - سی شارپ
استفاده از Api گوگل مپ در سی شارپ #C
2 Comments