আপডেট করা হয়েছে
আমাদের একটি অভ্যন্তরীণ ইউআই লাইব্রেরি রয়েছে যা মাইক্রোসফ্টের এএসপি.এনইটি অন্তর্নির্মিত জেএসওএন ফর্ম্যাট, যেমন /Date(msecs)/
এখানে মূলত সম্পর্কে জিজ্ঞাসা করতে হয়েছে, এবং জেএসওএন.এনইটিএস সহ বেশিরভাগ জেএসএনের ডেট ফর্ম্যাটকে মোকাবেলা করতে হবে 2014-06-22T00:00:00.0
। এ ছাড়া 3 দশমিক জায়গা ছাড়াও আমাদের পুরানো অসমর্থতার সাথে মোকাবিলা করতে হবে ।
আমরা প্রথমে আমরা কী ধরণের তারিখ গ্রহণ করছি তা সনাক্ত করে এটি একটি সাধারণ জাভাস্ক্রিপ্টে পার্স করুন Date
অবজেক্টে , তারপরে সেটিকে ফর্ম্যাট করুন।
1) মাইক্রোসফ্ট তারিখ ফর্ম্যাট সনাক্ত করুন
// Handling of Microsoft AJAX Dates, formatted like '/Date(01238329348239)/'
function looksLikeMSDate(s) {
return /^\/Date\(/.test(s);
}
2) আইএসও তারিখের ফর্ম্যাটটি সনাক্ত করুন
var isoDateRegex = /^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(\.\d\d?\d?)?([\+-]\d\d:\d\d|Z)?$/;
function looksLikeIsoDate(s) {
return isoDateRegex.test(s);
}
3) পার্স এমএস তারিখ বিন্যাস:
function parseMSDate(s) {
// Jump forward past the /Date(, parseInt handles the rest
return new Date(parseInt(s.substr(6)));
}
4) পার্সো আইএসও তারিখের ফর্ম্যাট।
আমাদের কাছে নিশ্চিত হওয়ার একটি উপায় রয়েছে যে আমরা সর্বদা তিন মিলি সেকেন্ডে স্থান পেতে স্ট্যান্ডার্ড আইএসও তারিখগুলি বা আইএসও তারিখগুলি সংশোধন করেছি ( উপরে দেখুন) ) , তাই পরিবেশের উপর নির্ভর করে কোডটি ভিন্ন।
4 ক) স্ট্যান্ডার্ড আইএসও তারিখের ফর্ম্যাটটি পার্স করুন, পুরানো ইস্যুগুলির সাথে মোকাবেলা করুন:
function parseIsoDate(s) {
var m = isoDateRegex.exec(s);
// Is this UTC, offset, or undefined? Treat undefined as UTC.
if (m.length == 7 || // Just the y-m-dTh:m:s, no ms, no tz offset - assume UTC
(m.length > 7 && (
!m[7] || // Array came back length 9 with undefined for 7 and 8
m[7].charAt(0) != '.' || // ms portion, no tz offset, or no ms portion, Z
!m[8] || // ms portion, no tz offset
m[8] == 'Z'))) { // ms portion and Z
// JavaScript's weirdo date handling expects just the months to be 0-based, as in 0-11, not 1-12 - the rest are as you expect in dates.
var d = new Date(Date.UTC(m[1], m[2]-1, m[3], m[4], m[5], m[6]));
} else {
// local
var d = new Date(m[1], m[2]-1, m[3], m[4], m[5], m[6]);
}
return d;
}
4 খ) স্থির তিন মিলিসেকেন্ড দশমিক স্থান সহ ISO ফর্ম্যাটটি পার্স করুন - আরও সহজ:
function parseIsoDate(s) {
return new Date(s);
}
5) এটি ফর্ম্যাট করুন:
function hasTime(d) {
return !!(d.getUTCHours() || d.getUTCMinutes() || d.getUTCSeconds());
}
function zeroFill(n) {
if ((n + '').length == 1)
return '0' + n;
return n;
}
function formatDate(d) {
if (hasTime(d)) {
var s = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
s += ' ' + d.getHours() + ':' + zeroFill(d.getMinutes()) + ':' + zeroFill(d.getSeconds());
} else {
var s = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
}
return s;
}
6) সব একসাথে টাই করুন:
function parseDate(s) {
var d;
if (looksLikeMSDate(s))
d = parseMSDate(s);
else if (looksLikeIsoDate(s))
d = parseIsoDate(s);
else
return null;
return formatDate(d);
}
নীচের পুরানো উত্তরটি এই তারিখের ফর্ম্যাটটিকে jQuery এর নিজস্ব JSON পার্সিংয়ে বেঁধে দেওয়ার জন্য দরকারী যাতে আপনি স্ট্রিংয়ের পরিবর্তে তারিখ অবজেক্টগুলি পান বা আপনি এখনও jQuery <1.5 তে আটকে থাকেন।
পুরানো উত্তর
আপনি যদি এএসপি.নেট এমভিসির সাথে jQuery 1.4 এর অ্যাজাক্স ফাংশনটি ব্যবহার করছেন তবে আপনি সমস্ত ডেটটাইম বৈশিষ্ট্যগুলি ডেট অবজেক্টে এগুলি দিয়ে পরিবর্তন করতে পারেন:
// Once
jQuery.parseJSON = function(d) {return eval('(' + d + ')');};
$.ajax({
...
dataFilter: function(d) {
return d.replace(/"\\\/(Date\(-?\d+\))\\\/"/g, 'new $1');
},
...
});
JQuery 1.5 এ আপনি parseJSON
আজাক্স কলটিতে রূপান্তরকারী বিকল্পটি ব্যবহার করে বিশ্বব্যাপী পদ্ধতিটি ওভাররাইড করা এড়াতে পারবেন ।
http://api.jquery.com/jQuery.ajax/
দুর্ভাগ্যক্রমে আপনাকে তারিখগুলি বিশ্বব্যাপী স্থানে স্থান বিশ্লেষণের জন্য পুরানো alভাল রুটে স্যুইচ করতে হবে - অন্যথায় আপনাকে এগুলি কেস-বাই-কেস ভিত্তিতে পোস্ট পার্সে রূপান্তর করতে হবে।