jquery मैं एक Microsoft JSON दिनांक कैसे प्रारूपित करूं?




asp.net ajax (20)

अपडेट किया गया

हमारे पास एक आंतरिक यूआई लाइब्रेरी है जिसे माइक्रोसॉफ्ट के एएसपी.NET में अंतर्निहित जेएसओएन प्रारूप, जैसे /Date(msecs)/ मूल रूप से यहां पूछा गया है, और JSON.NET सहित अधिकांश JSON का दिनांक प्रारूप, 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 बी) एक निश्चित तीन मिलीसेकंड दशमलव स्थानों के साथ पार्स आईएसओ प्रारूप - बहुत आसान:

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/

दुर्भाग्यवश आपको वैश्विक स्तर पर पार्स को पार्स करने के लिए पुराने eval मार्ग पर जाना होगा - अन्यथा आपको उन्हें अधिक केस-दर-मामले आधार पोस्ट-पार्स पर रूपांतरित करने की आवश्यकता है।

https://code.i-harness.com

मैं jQuery के साथ Ajax अपनी पहली दरार ले रहा हूँ। मुझे अपना डेटा मेरे पृष्ठ पर मिल रहा है, लेकिन मुझे JSON डेटा के साथ कुछ परेशानी हो रही है जो दिनांक डेटा प्रकारों के लिए वापस आती है। असल में, मुझे एक स्ट्रिंग बैक मिल रहा है जो इस तरह दिखता है:

/Date(1224043200000)/

किसी से पूरी तरह से नया JSON तक - मैं इसे एक लघु तिथि प्रारूप में कैसे प्रारूपित करूं? इसे jQuery कोड में कहीं कहीं संभाला जाना चाहिए? मैंने jQuery.UI.datepicker प्लगइन को किसी भी सफलता के बिना $.datepicker.formatDate() का उपयोग करने का प्रयास किया है।

एफवाईआई: यहां दिए गए समाधान का जवाब यहां दिए गए उत्तरों के संयोजन के साथ आया है:

function getMismatch(id) {
  $.getJSON("Main.aspx?Callback=GetMismatch",
    { MismatchId: id },

    function (result) {
      $("#AuthMerchId").text(result.AuthorizationMerchantId);
      $("#SttlMerchId").text(result.SettlementMerchantId);
      $("#CreateDate").text(formatJSONDate(Date(result.AppendDts)));
      $("#ExpireDate").text(formatJSONDate(Date(result.ExpiresDts)));
      $("#LastUpdate").text(formatJSONDate(Date(result.LastUpdateDts)));
      $("#LastUpdatedBy").text(result.LastUpdateNt);
      $("#ProcessIn").text(result.ProcessIn);
    }
  );

  return false;
}

function formatJSONDate(jsonDate) {
  var newDate = dateFormat(jsonDate, "mm/dd/yyyy");
  return newDate;
}

इस समाधान ने मेरी ऑब्जेक्ट को कॉलबैक विधि से प्राप्त किया और दिनांक प्रारूप लाइब्रेरी का उपयोग करके पेज पर तारीखों को सही तरीके से प्रदर्शित किया।


अपने आप को दोहराना न करें - $.parseJSON() का उपयोग कर स्वचालित दिनांक रूपांतरण

आपकी पोस्ट के उत्तर जावास्क्रिप्ट तिथियों में मैन्युअल दिनांक रूपांतरण प्रदान करते हैं। मैंने jQuery के $.parseJSON() थोड़ा सा बढ़ा दिया है, इसलिए जब आप इसे निर्देश देते हैं तो यह स्वचालित रूप से तिथियों को पार्स करने में सक्षम होता है। यह ASP.NET प्रारूपित दिनांक ( /Date(12348721342)/ ) के साथ-साथ आईएसओ स्वरूपित तिथियां ( 2010-01-01T12.34.56.789Z ) को संसाधित करता है जो ब्राउज़र में देशी JSON फ़ंक्शंस (और json2.js जैसे पुस्तकालय) द्वारा समर्थित हैं।

वैसे भी। यदि आप बार-बार अपना दिनांक रूपांतरण कोड दोहराना नहीं चाहते हैं तो मेरा सुझाव है कि आप इस ब्लॉग पोस्ट को पढ़ लें और वह कोड प्राप्त करें जो आपके जीवन को थोड़ा आसान बना देगा।


Eval आवश्यक नहीं है। यह ठीक काम करेगा:

var date = new Date(parseInt(jsonDate.substr(6)));

सबस्ट्रेट फ़ंक्शन "/ दिनांक (" भाग लेता है, और parseInt फ़ंक्शन पूर्णांक प्राप्त करता है और अंत में ") /" को अनदेखा करता है। परिणामी संख्या तिथि कन्स्ट्रक्टर में पारित की जाती है।

संपादित करें: मैंने जानबूझकर रेडिक्स छोड़ दिया है (parseInt के लिए दूसरा तर्क); नीचे मेरी टिप्पणी देखें । इसके अलावा, मैं रोरी की टिप्पणी से पूरी तरह से सहमत हूं: इस पुराने प्रारूप पर आईएसओ -8601 तिथियों को प्राथमिकता दी जाती है - इसलिए इस प्रारूप को आम तौर पर नए विकास के लिए उपयोग नहीं किया जाना चाहिए। उत्कृष्ट Json.NET लाइब्रेरी को एक शानदार विकल्प के लिए देखें जो Json.NET प्रारूप का उपयोग कर तिथियों को क्रमबद्ध करता है।

आईएसओ -8601 स्वरूपित JSON तिथियों के लिए, बस स्ट्रिंग को दिनांक निर्माता में पास करें:

var date = new Date(jsonDate); //no ugly parsing needed; full timezone support

JQuery 1.5 में, जब तक आपके पास पुराने ब्राउज़र के लिए json2.js को कवर करने के लिए, आप अजाक्स से आने वाली सभी तिथियों को निम्नानुसार deserialize कर सकते हैं:

(function () {
    var DATE_START = "/Date(";
    var DATE_START_LENGTH = DATE_START.length;

    function isDateString(x) {
        return typeof x === "string" && x.startsWith(DATE_START);
    }

    function deserializeDateString(dateString) {
        var dateOffsetByLocalTime = new Date(parseInt(dateString.substr(DATE_START_LENGTH)));
        var utcDate = new Date(dateOffsetByLocalTime.getTime() - dateOffsetByLocalTime.getTimezoneOffset() * 60 * 1000);
        return utcDate;
    }

    function convertJSONDates(key, value) {
      if (isDateString(value)) {
        return deserializeDateString(value);
      }
      return value;
    }

    window.jQuery.ajaxSetup({
      converters: {
        "text json": function(data) {
          return window.JSON.parse(data, convertJSONDates);
        }
      }
    });
}());

मैंने तर्क शामिल किया है जो मानता है कि आप यूटीसी के रूप में सर्वर से सभी तिथियां भेजते हैं (जो आपको करना चाहिए); उपभोक्ता को तब एक जावास्क्रिप्ट Date ऑब्जेक्ट मिलता है जिसमें इसे प्रतिबिंबित करने के लिए उपयुक्त टिक मान होते हैं। यही है, तिथि पर getUTCHours() , आदि को कॉल करना उसी मान को वापस करेगा जैसा सर्वर पर किया गया था, और getHours() को कॉल करने से उपयोगकर्ता के स्थानीय getHours() में मूल्य उनके ब्राउज़र द्वारा निर्धारित किया जाएगा।

यह टाइमज़ोन ऑफ़सेट के साथ WCF प्रारूप को ध्यान में रखता नहीं है, हालांकि यह जोड़ना अपेक्षाकृत आसान होगा।


Mootools समाधान:

new Date(Date(result.AppendDts)).format('%x')

Mootools-more की आवश्यकता है। फ़ायरफ़ॉक्स 3.6.3 और आईई 7.0.5730.13 पर mootools-1.2.3.1-अधिक का उपयोग करके परीक्षण किया गया


अपने पृष्ठ में jQuery यूआई प्लगइन जोड़ें:

function DateFormate(dateConvert) {
    return $.datepicker.formatDate("dd/MM/yyyy", eval('new ' + dateConvert.slice(1, -1)));
};

आप जावास्क्रिप्ट लाइब्रेरी http://momentjs.com/ का भी उपयोग कर सकते हैं, जो कि विभिन्न स्थानीय प्रारूपों के साथ सौदा करने और दिनांक मूल्यों के साथ अन्य संचालन करने की योजना बनाते समय आसान होता है:

function getMismatch(id) {
    $.getJSON("Main.aspx?Callback=GetMismatch",
    { MismatchId: id },

    function (result) {
        $("#AuthMerchId").text(result.AuthorizationMerchantId);
        $("#SttlMerchId").text(result.SettlementMerchantId);
        $("#CreateDate").text(moment(result.AppendDts).format("L"));
        $("#ExpireDate").text(moment(result.ExpiresDts).format("L"));
        $("#LastUpdate").text(moment(result.LastUpdateDts).format("L"));
        $("#LastUpdatedBy").text(result.LastUpdateNt);
        $("#ProcessIn").text(result.ProcessIn);
    }
    );
    return false;
}

स्थानीयकरण की स्थापना करना आपके प्रोजेक्ट में कॉन्फ़िगरेशन फ़ाइलों को जोड़ने के रूप में आसान है (आप उन्हें momentjs.com पर प्राप्त करते हैं) और भाषा को कॉन्फ़िगर करना:

moment.lang('de');

इन उत्तरों में से प्रत्येक में एक बात आम है: वे सभी तारीखों को एक मान (आमतौर पर एक स्ट्रिंग) के रूप में संग्रहीत करते हैं।

एक और विकल्प JSON की अंतर्निहित संरचना का लाभ उठाना है, और संख्याओं की सूची के रूप में दिनांक का प्रतिनिधित्व करना है:

{ "name":"Nick",
  "birthdate":[1968,6,9] }

बेशक, आपको यह सुनिश्चित करना होगा कि वार्तालाप के दोनों सिरों प्रारूप (वर्ष, महीने, दिन) पर सहमत हों, और कौन से फ़ील्ड तिथियों के लिए हैं, ... लेकिन इसका तिथि पूरी तरह से टालने का लाभ है टू-स्ट्रिंग रूपांतरण। यह सभी संख्या है - बिल्कुल कोई तार नहीं। इसके अलावा, ऑर्डर का उपयोग करके: वर्ष, महीना, दिन भी तिथि के अनुसार उचित सॉर्टिंग की अनुमति देता है।

बस बॉक्स के बाहर सोच रहा है - एक JSON तारीख को एक स्ट्रिंग के रूप में संग्रहीत करने की आवश्यकता नहीं है।

ऐसा करने के लिए एक और बोनस यह है कि आप आसानी से (और कुशलतापूर्वक) किसी दिए गए वर्ष या महीने के लिए सभी रिकॉर्ड चुन सकते हैं, जिस तरह से CouchDB सरणी मूल्यों पर क्वेरी को संभालता है।


एफवाईआई, सर्वर पक्ष पर पाइथन का उपयोग करने वाले किसी भी व्यक्ति के लिए: datetime.datetime ()। Ctime () एक स्ट्रिंग देता है जो "नई तिथि ()" द्वारा मूल रूप से पारदर्शी है। यही है, यदि आप एक नया डेटाटाइम.datetime उदाहरण बनाते हैं (जैसे datetime.datetime.now के साथ), स्ट्रिंग को JSON स्ट्रिंग में शामिल किया जा सकता है, और उसके बाद उस स्ट्रिंग को दिनांक निर्माता के पहले तर्क के रूप में पारित किया जा सकता है। मुझे अभी तक कोई अपवाद नहीं मिला है, लेकिन मैंने इसका परीक्षण भी नहीं किया है, या तो।


क्या होगा यदि .NET वापस आती है ...

return DateTime.Now.ToString("u"); //"2013-09-17 15:18:53Z"

और फिर जावास्क्रिप्ट में ...

var x = new Date("2013-09-17 15:18:53Z");

तारीख आईएसओ मानक की जांच करें; इस तरह की तरह:

yyyy.MM.ddThh:mm

यह 2008.11.20T22:18 बन जाता है।


देर से पोस्ट, लेकिन उन लोगों के लिए जिन्होंने इस पोस्ट की खोज की थी।

इसकी कल्पना करें:

    [Authorize(Roles = "Administrator")]
    [Authorize(Roles = "Director")]
    [Authorize(Roles = "Human Resources")]
    [HttpGet]
    public ActionResult GetUserData(string UserIdGuidKey)
    {
        if (UserIdGuidKey!= null)
        {
            var guidUserId = new Guid(UserIdGuidKey);
            var memuser = Membership.GetUser(guidUserId);
            var profileuser = Profile.GetUserProfile(memuser.UserName);
            var list = new {
                              UserName = memuser.UserName,
                              Email = memuser.Email ,
                              IsApproved = memuser.IsApproved.ToString() ,
                              IsLockedOut = memuser.IsLockedOut.ToString() ,
                              LastLockoutDate = memuser.LastLockoutDate.ToString() ,
                              CreationDate = memuser.CreationDate.ToString() ,
                              LastLoginDate = memuser.LastLoginDate.ToString() ,
                              LastActivityDate = memuser.LastActivityDate.ToString() ,
                              LastPasswordChangedDate = memuser.LastPasswordChangedDate.ToString() ,
                              IsOnline = memuser.IsOnline.ToString() ,
                              FirstName = profileuser.FirstName ,
                              LastName = profileuser.LastName ,
                              NickName = profileuser.NickName ,
                              BirthDate = profileuser.BirthDate.ToString() ,
            };
            return Json(list, JsonRequestBehavior.AllowGet);
        }
        return Redirect("Index");
    }

जैसा कि आप देख सकते हैं, मैं "ऑटो" जेनेरिक बनाने के लिए सी # 3.0 की सुविधा का उपयोग कर रहा हूं। यह थोड़ा आलसी है, लेकिन मुझे यह पसंद है और यह काम करता है। बस एक नोट: प्रोफाइल एक कस्टम क्लास है जिसे मैंने अपने वेब एप्लिकेशन प्रोजेक्ट के लिए बनाया है।


भयानक धागे में पोस्टिंग:

var d = new Date(parseInt('/Date(1224043200000)/'.slice(6, -2)));
alert('' + (1 + d.getMonth()) + '/' + d.getDate() + '/' + d.getFullYear().toString().slice(-2));

मुझे इस तरह की तारीख मिलती है:

"/Date(1276290000000+0300)/"

कुछ उदाहरणों में दिनांक थोड़ा अलग प्रारूपों में है:

"/Date(12762900000000300)/"
"Date(1276290000000-0300)"

आदि।

तो मैं निम्नलिखित RegExp के साथ आया था:

/\/+Date\(([\d+]+)\)\/+/

और अंतिम कोड है:

var myDate = new Date(parseInt(jsonWcfDate.replace(/\/+Date\(([\d+-]+)\)\/+/, '$1')));

आशा करता हूँ की ये काम करेगा।

अपडेट करें: मुझे यह लिंक माइक्रोसॉफ्ट से मिला है: मैं जेएसओएन के साथ तिथियों को सीरियलाइज कैसे करूं?

ऐसा लगता है कि हम सभी की तलाश है।


मूल उदाहरण:

/Date(1224043200000)/  

अंतर्निहित जेएसओएन क्रमबद्धता का उपयोग करते हुए डब्ल्यूसीएफ आरईएसटी के माध्यम से तिथियां भेजते समय डब्ल्यूसीएफ द्वारा प्रयुक्त स्वरूपण को प्रतिबिंबित नहीं करता है। (कम से कम .NET 3.5, एसपी 1 पर)

मुझे यहां जवाब उपयोगी पाया गया है, लेकिन रेगेक्स को थोड़ा सा संपादन आवश्यक है, क्योंकि ऐसा लगता है कि टाइमज़ोन जीएमटी ऑफसेट को डब्लूसीएफ जेएसओएन में लौटाई गई संख्या (1 9 70 से) में जोड़ा जा रहा है।

एक डब्ल्यूसीएफ सेवा में मेरे पास है:

[OperationContract]
[WebInvoke(
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.WrappedRequest
    )]
ApptVisitLinkInfo GetCurrentLinkInfo( int appointmentsId );

ApptVisitLinkInfo को परिभाषित किया गया है:

public class ApptVisitLinkInfo {
    string Field1 { get; set; }
    DateTime Field2 { get; set; }
    ...
}

जब सेवा से जेसन के रूप में "फ़ील्ड 2" वापस किया जाता है तो मान है:

/Date(1224043200000-0600)/

मूल्य के हिस्से के रूप में शामिल टाइमज़ोन ऑफसेट पर ध्यान दें।

संशोधित रेगेक्स:

/\/Date\((.*?)\)\//gi

यह थोड़ा और उत्सुक है और माता-पिता के बीच सबकुछ पकड़ता है, केवल पहले नंबर पर नहीं। परिणामी समय 1 9 70 में sinze, प्लस टाइमज़ोन ऑफसेट सभी को तारीख वस्तु प्राप्त करने के लिए eval में खिलाया जा सकता है।

प्रतिस्थापन के लिए जावास्क्रिप्ट की परिणामी रेखा है:

replace(/\/Date\((.*?)\)\//gi, "new Date($1)");

मैंने "इनलाइन स्क्रिप्ट में ऑब्जेक्ट्स लिखते समय Microsoft serializer द्वारा जेनरेट किए गए लोगों से छुटकारा पाने के लिए" पैनोस की नियमित अभिव्यक्ति में वर्ण जोड़ना समाप्त कर दिया:

तो अगर आपके पास आपके सी # code-behind में एक संपत्ति है code-behind ऐसा कुछ है

protected string JsonObject { get { return jsSerialiser.Serialize(_myObject); }}

और आपके एएसपीएक्स में आपके पास है

<script type="text/javascript">
    var myObject = '<%= JsonObject %>';
</script>

आपको कुछ मिल जाएगा

var myObject = '{"StartDate":"\/Date(1255131630400)\/"}';

डबल कोट्स पर ध्यान दें।

इसे एक ऐसे रूप में प्राप्त करने के लिए जो eval सही ढंग से deserialize होगा, मैंने उपयोग किया:

myObject = myObject.replace(/"\/Date\((\d+)\)\/"/g, 'new Date($1)');

मैं Prototype का उपयोग करता हूं और इसका उपयोग करने के लिए मैंने जोड़ा

String.prototype.evalJSONWithDates = function() {
    var jsonWithDates = this.replace(/"\/Date\((\d+)\)\/"/g, 'new Date($1)');
    return jsonWithDates.evalJSON(true);
}

यह निराश करने वाला है। मेरा समाधान एएसपी.नेट के जावास्क्रिप्टसेरियलाइज़र द्वारा उत्पन्न मूल्य से "/ और ​​/" को पार्स करना था ताकि यद्यपि JSON की तारीख शाब्दिक न हो, फिर भी यह ब्राउज़र द्वारा दिनांक के रूप में व्याख्या की जाती है, जो कि मैं वास्तव में चाहते हैं: {"myDate":Date(123456789)}

डेटटाइम के लिए कस्टम जावास्क्रिप्ट कनवर्टर?

मुझे रॉय टिंकर की टिप्पणी की शुद्धता पर ज़ोर देना चाहिए। यह कानूनी JSON नहीं है। यह जावास्क्रिप्ट के लिए समस्या बनने से पहले समस्या को हटाने के लिए सर्वर पर एक गंदे, गंदे हैक है। यह एक JSON पार्सर चकित करेगा। मैंने जमीन से उतरने के लिए इसका इस्तेमाल किया, लेकिन मैं इसका और अधिक उपयोग नहीं करता हूं। हालांकि, मुझे अभी भी लगता है कि सर्वर किस प्रकार दिनांक स्वरूपित करता है, उदाहरण के लिए, आईएसओ के रूप में कहीं और उल्लेख किया गया है।


यहां एक और दृष्टिकोण जोड़ने के लिए, WCF लेता है कि "टिक्स दृष्टिकोण" WCF साथ समस्याओं का सामना करना पड़ता है यदि आप here और अन्य स्थानों पर वर्णित बहुत सावधान नहीं हैं। तो अब मैं आईएसओ 8601 प्रारूप का उपयोग कर रहा हूं जो .NET और जावास्क्रिप्ट दोनों का समर्थन करता है जिसमें टाइमज़ोन ऑफ़सेट शामिल हैं। नीचे विवरण हैं:

डब्ल्यूसीएफ / .NET में:

जहां CreationDate एक सिस्टम है। डेटटाइम; ToString ("o") .NET के राउंड-ट्रिप प्रारूप विनिर्देशक का उपयोग कर रहा है जो एक आईएसओ 8601-अनुरूप दिनांक स्ट्रिंग उत्पन्न करता है

new MyInfo {
    CreationDate = r.CreationDate.ToString("o"),
};

जावास्क्रिप्ट में

जेएसओएन को पुनः प्राप्त करने के बाद मैं दिनांक नियंत्रक का उपयोग कर जावास्क्रिप्ट दिनांक ऑब्जेक्ट्स की तारीख तय करता हूं जो एक आईएसओ 8601 दिनांक स्ट्रिंग स्वीकार करता है ...

$.getJSON(
    "MyRestService.svc/myinfo",
    function (data) {
        $.each(data.myinfos, function (r) {
            this.CreatedOn = new Date(this.CreationDate);
        });
        // Now each myinfo object in the myinfos collection has a CreatedOn field that is a real JavaScript date (with timezone intact).
       alert(data.myinfos[0].CreationDate.toLocaleString());
    }
)

एक बार आपके पास जावास्क्रिप्ट की तारीख हो जाने के बाद आप सभी सुविधाजनक और भरोसेमंद दिनांक विधियों जैसे toDateString , toLocaleString इत्यादि का उपयोग कर सकते हैं।


यह आपकी मदद भी कर सकता है।

 function ToJavaScriptDate(value) { //To Parse Date from the Returned Parsed Date
        var pattern = /Date\(([^)]+)\)/;
        var results = pattern.exec(value);
        var dt = new Date(parseFloat(results[1]));
        return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
    }

var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); 

JQuery लाइब्रेरी का उपयोग किए बिना कोई और विकल्प है?





json