Kaip nustatyti „Microsoft JSON“ datą?

Aš imu savo pirmąjį kreko Ajax naudodamas jQuery. Gavau duomenis mano puslapyje, tačiau turiu problemų su JSON duomenimis, kurie yra grąžinti datos duomenų tipams. Iš esmės aš gaunu eilutę, kuri atrodo taip:

 /Date(1224043200000)/ 

Iš ką nors visiškai naujo į JSON - Kaip formatuoti šį formatą į trumpą formatą? Ar ji turėtų būti apdorojama kažkur jQuery kode? Bandžiau „ jQuery.UI.datepicker įskiepį naudodamas $.datepicker.formatDate() be sėkmės.

FYI: čia pateikiamas sprendimas naudoja atsakymų derinį:

 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; } 

Šis sprendimas gavo mano objektą iš atgalinio ryšio metodo ir teisingai parodė datą puslapyje naudodamas datų formato biblioteką.

1817 m
15 окт. Nustatė Mark Struzinski spalio 15 d 2008-10-15 23:43 '08, 11:43 val. 2008-10-15 23:43
@ 39 atsakymų
  • 1
  • 2

Įvertinimas nebūtinas. Jis veiks gerai:

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

Pagrindinė funkcija išeina "/ Data (" dalis ", o parseInt funkcija užima sveikąjį skaičių ir ignoruoja") / "pabaigoje. Gautas skaičius perduodamas Data konstruktoriui.

EDIT: aš sąmoningai praleidau bazę (antrasis argumentas yra parseInt); žr. mano komentarą toliau . Be to, visiškai sutinku su „ Rory“ komentarais : ISO-8601 datos yra geriau nei šis senas formatas, todėl šis formatas paprastai neturėtų būti naudojamas naujai plėtrai. „ Json.NET“ puikioje bibliotekoje rasite puikią alternatyvą, kuri serializuoja datas pagal ISO-8601 formatą.

Su ISO-8601 suformatuotomis JSON datomis tiesiog perkelkite eilutę į „Date“ konstruktorių:

 var date = new Date(jsonDate); //no ugly parsing needed; full timezone support 
1587 m
23 февр. Roy Tinker atsakymas vasario 23 d 2010-02-23 07:15 '10, 7:15 val. 2010-02-23 07:15

Galite tai naudoti, jei norite gauti datą iš JSON:

 var date = eval(jsonDate.replace(/\/Date\((\d+)\)\//gi, "new Date($1)")); 
border=0

Tada galite naudoti datos scenarijaus „ JavaScript“ scenarijų (1,2 KB, kai kasybos ir gzip), kad būtų rodomas taip, kaip norite.

117
16 окт. Atsakymas yra pateiktas Panos spalio 16 d. 2008-10-16 00:14 '08 at 0:14 2008-10-16 00:14

Tiems, kurie naudoja „Newtonsoft Json.NET“ , perskaitykite, kaip tai padaryti naudojant „ Embedded JSON“ į „IE8“, „Firefox 3.5“ ir „Json.NET“ .

Taip pat naudinga dokumentuoti Json.NET parašytų datų formato keitimą: datų sujungimas naudojant „Json.NET“

Tiems, kurie yra pernelyg tingūs, čia yra greiti žingsniai. Kadangi JSON turi nemokamą „DateTime“ diegimą, turite naudoti IsoDateTimeConverter() . Atkreipkite dėmesį, kad su „Json.NET 4.5“ numatytasis datos formatas yra ISO, todėl toliau nurodytas kodas nereikalingas.

 string jsonText = JsonConvert.SerializeObject(p, new IsoDateTimeConverter()); 

JSON eis per

 "fieldName": "2009-04-12T20:44:55" 

Galiausiai, kai kurie „JavaScript“, skirti ISO datai konvertuoti į „JavaScript“ datą:

 function isoDateReviver(value) { if (typeof value === 'string') { var a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)(?:([\+-])(\d{2})\:(\d{2}))?Z?$/.exec(value); if (a) { var utcMilliseconds = Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]); return new Date(utcMilliseconds); } } return value; } 

Aš taip naudoju

 $("<span />").text(isoDateReviver(item.fieldName).toLocaleString()).appendTo("#" + divName); 
86
19 янв. Atsakyti Jason Jongui 19 d 2010-01-19 07:53 '10, 7:53, 2010-01-19 07:53

Pradinis pavyzdys:

 /Date(1224043200000)/ 

neatspindi WCF naudojamo formatavimo siunčiant datas per WCF REST, naudojant integruotą JSON serializaciją. (bent .NET 3.5, SP1)

Radau atsakymą naudingą, tačiau reikia šiek tiek redaguoti reguliariose išraiškose, nes atrodo, kad GMT laiko juostos poslinkis pridedamas prie grąžinto numerio (nuo 1970 m.) WCF JSON.

WCF paslaugoje turiu:

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

ApptVisitLinkInfo yra tiesiog apibrėžta:

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

Kai „Field2“ iš paslaugos „Json“ grąžinama, ši vertė yra:

 /Date(1224043200000-0600)/ 

Atkreipkite dėmesį, kad laiko juostos poslinkis įtraukiamas kaip vertės dalis.

Modifikuota reguliari raiška:

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

Jis yra šiek tiek labiau nekantrus ir užfiksuoja viską tarp parenų, o ne tik pirmąjį skaičių. Gautas sinozės laikas 1970 m. Ir laiko juostos poslinkis gali būti perkeliamas į eval, kad gautų datą.

Gauta „JavaScript“ eilutė pakeis:

 replace(/\/Date\((.*?)\)\//gi, "new Date($1)"); 
57
30 дек. atsakymą Aaronas pateikė 30 d. 2009-12-30 04:21 '10, 4:21 am 2009-12-30 04:21

Negalima pakartoti savęs - automatizuokite datų konvertavimą su $.parseJSON()

Atsakymai į jūsų pranešimą suteikia galimybę rankiniu būdu konvertuoti datas į „javascript“ datas. Aš pratęsiau šiek tiek jQuery $.parseJSON() , kad ji galėtų automatiškai analizuoti datas, kai ją $.parseJSON() . Jis tvarko ASP.NET formatuotas datas ( /Date(12348721342)/ ) ir ISO datas ( 2010-01-01T12.34.56.789Z ), kurias palaiko integruotos JSON funkcijos naršyklėse (ir bibliotekose, pvz., Json2.js) ).

Bet kuriuo atveju. Jei nenorite dar kartą pakartoti datų konvertavimo kodo, siūlau perskaityti šį dienoraščio įrašą ir gauti kodą, kuris palengvins jūsų gyvenimą.

55
27 дек. Robert Koritnik atsakymas 27 d. 2010-12-27 19:21 '11, 19:21, 2010-12-27 19:21

Jei sakote „javascript“,

 var thedate = new Date(1224043200000); alert(thedate); 

pamatysite, kad tai yra teisinga data, ir jūs galite ją naudoti bet kurioje „JavaScript“ kodo vietoje su bet kuria sistema.

52
15 окт. Johno Bokerio atsakymas spalio 15 d 2008-10-15 23:49 '08, 11:49 2008-10-15 23:49

Spauskite čia norėdami sužinoti demo.

„Javascript“ / „Jquery“

 var = MyDate_String_Value = "/Date(1224043200000)/" var value = new Date ( parseInt(MyDate_String_Value.replace(/(^.*\()|([+-].*$)/g, '')) ); var dat = value.getMonth() + 1 + "/" + value.getDate() + "/" + value.getFullYear(); 

Rezultatas - „10/15/2008“

49
17 марта '13 в 20:41 2013-03-17 20:41 atsakymas pateiktas vartotojo2007801 kovo 17 d. 13 val. 2013-03-17 20:41

atnaujinta

Turime vidinę vartotojo sąsajos biblioteką, kuri turi atitikti ir „Microsoft ASP.NET“ integruotą JSON formatą, pvz., „ /Date(msecs)/ ir /Date(msecs)/ čia, ir dauguma JSON datos formatų, įskaitant JSON.NET, pavyzdžiui, 2014-06-22T00:00:00.0 . Be to, turime susidoroti su senyvo amžiaus žmonių negalėjimu susidoroti su nieko, išskyrus tris dešimtųjų tikslumu .

Pirmiausia nustatome, kurią datą mes vartojame, analizuojame įprastą „JavaScript“ Date objektą ir tada formatuokite.

1) Nustatykite „Microsoft“ datos formatą

 // Handling of Microsoft AJAX Dates, formatted like '/Date(01238329348239)/' function looksLikeMSDate(s) { return /^\/Date\(/.test(s); } 

2) Nustatykite ISO datos formatą

 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) Sintaksės datos formatas:

 function parseMSDate(s) { // Jump forward past the /Date(, parseInt handles the rest return new Date(parseInt(s.substr(6))); } 

4) Išardykite ISO datos formatą.

Mes turime bent jau tam tikrą būdą įsitikinti, kad dirbame su standartinėmis ISO datos ar ISO datos, kurios visada turi tris milisekundes ( žr. Aukščiau ), todėl kodas skiriasi priklausomai nuo aplinkos.

4a) Išardykite ISO standarto datos formatą, susidorodami su senais klausimais:

 function parseIsoDate(s) { var m = isoDateRegex.exec(s); // Is this UTC, offset, or undefined? Treat undefined as UTC. if (m.length == 7 || // Just the ym-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 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; } 

4b) Išardykite ISO formatą su fiksuotais ženklais per tris milisekundes - daug lengviau:

 function parseIsoDate(s) { return new Date(s); } 

5) Formatuokite:

 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) Susieti visus:

 function parseDate(s) { var d; if (looksLikeMSDate(s)) d = parseMSDate(s); else if (looksLikeIsoDate(s)) d = parseIsoDate(s); else return null; return formatDate(d); } 

Šis senas atsakymas yra naudingas, jei norite susieti šios datos formatavimą su JQuery JSON analizavimu, todėl vietoj styginių gausite datos objektus, arba jei vis dar esate įstrigę jQuery <1.5.

Senas atsakymas

Jei naudojate „jQuery 1.4 Ajax“ funkciją su ASP.NET MVC, visas „DateTime“ ypatybes galite įjungti į datos objektus naudodami:

 // Once jQuery.parseJSON = function(d) {return eval('(' + d + ')');}; $.ajax({ ... dataFilter: function(d) { return d.replace(/"\\\/(Date\(-?\d+\))\\\/"/g, 'new $1'); }, ... }); 

Naudodamiesi „jQuery 1.5“, galite išvengti parseJSON metodu visame pasaulyje, naudojant „Ajax“ skambučio parinktį.

http://api.jquery.com/jQuery.ajax/

Deja, turite pereiti prie vyresnio amžiaus eval maršruto, kad priverstumėte datus analizuoti visame pasaulyje vietoje - kitaip jums reikia juos paversti individualesne po analizės.

31
08 февр. Chris Moschini atsakymas 08 Feb. 2011-02-08 02:56 '11 at 2:56 2011-02-08 02:56

Baigiau pridėti simbolių į „Panos“ reguliarią išraišką, kad atsikratyčiau tų, kuriuos sukūrė „Microsoft“ serializatorius objektų rašymui įterptą scenarijų

Taigi, jei turite C # kodą turinčio turto, kažką panašaus

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

Ir jūsų aspx turite

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

Jūs gausite kažką panašaus

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

Atkreipkite dėmesį į dvigubas kabutes.

Norėčiau gauti tokią formą, kad eval būtų teisingai deserialize:

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

Aš naudoju prototipą ir jį naudoju

 String.prototype.evalJSONWithDates = function() { var jsonWithDates = this.replace(/"\/Date\((\d+)\)\/"/g, 'new Date($1)'); return jsonWithDates.evalJSON(true); } 
21
09 окт. atsakymą Chris Woodward pateikė spalio 09 d 2009-10-09 04:03 '09, 4:03 2009-10-09 04:03

Taip pat turėjau ieškoti šios problemos sprendimo ir galų gale atėjau moment.js, kuri yra gera biblioteka, kuri gali analizuoti šį datų formatą ir dar daugiau.

 var d = moment(yourdatestring) 

Jis išgelbėjo mane galvos skausmu, todėl maniau, kad pasidalinsiu su jumis. :)
Daugiau informacijos apie tai galite rasti čia: http://momentjs.com/

21
15 мая '13 в 9:36 2013-05-15 09:36 atsakymą pateikė Venemo gegužės 15 d. 13 val. 9:36 2013-05-15 09:36

JSON nėra integruoto datos tipo. Tai panaši į sekundžių / milisekundžių skaičių nuo tam tikros eros. Jei žinote erą, galite sukurti datą pridėdami tinkamą laiką.

20
15 окт. atsakymas suteiktas johnstok 15 okt. 2008-10-15 23:46 '08 11:46 2008-10-15 23:46

JQuery 1.5, jei turite json2.js, kad padengtumėte senesnes naršykles, galite deserialize visas datas, gautas iš „Ajax“, taip:

 (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); } } }); }()); 

Įtraukiau logiką, kuri daro prielaidą, kad siunčiate visas datas iš serverio UTC formatu (kurio reikia); tada vartotojas gauna javascript Date objektą, turintį atitinkamą žymės reikšmę, kad tai atspindėtų. Tai yra, kai skambinate „ getUTCHours() ir kt. Diena grąžinama ta pačia verte kaip ir serveryje, o skambutis į getHours() grąžins vertę vartotojo vietinėje laiko juostoje, kaip nustatyta jų naršyklėje.

Tai neatsižvelgia į WCF formatą su laiko juostų poslinkiais, nors tai būtų gana paprasta pridėti.

19
08 апр. Atsakymą pateikė Domenic 08 apr. 2011-04-08 04:59 '11 at 4:59 2011-04-08 04:59

Naudojant jQuery UI duomenų rinkiklį - tai tikrai prasminga, jei jau įjungiate jQuery UI:

 $.datepicker.formatDate('MM d, yy', new Date(parseInt('/Date(1224043200000)/'.substr(6)))); 

išvada:

2008 m. Spalio 15 d

17
30 авг. atsakymas, kurį davė dominuojanti 30 rug. 2011-08-30 12:33 '11, 12:33, 2011-08-30 12:33

Neperpildykite. Kaip mes darome dešimtmečius, perkeliame skaitinį poslinkį nuo de facto standartinės epochos nuo 1970 m. Sausio 1 d. Iki vidurnakčio GMT / UTC / c sekundėmis (arba milisekundėmis) nuo šios epochos. „JavaScript“ yra panašus, „Java“ yra panašus, „C“ yra panašus ir jis mėgsta internetą.

17
30 окт. Jé Queue 30 d. Atsakymas 2009-10-30 07:45 '09 7:45 val. 2009-10-30 07:45

Kiekvienas iš šių atsakymų turi vieną bendrą dalyką: jie visus saugo datas kaip vieną vertę (paprastai eilutę).

Kita galimybė - naudoti integruotą JSON struktūrą ir pateikti datą kaip skaičių sąrašą:

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

Žinoma, jums reikės įsitikinti, kad abu pokalbio galai atitinka formatą (metus, mėnesį, dieną), ir kokie laukai yra skirti datoms, ... tačiau jis turi pranašumą, kad būtų visiškai išvengta konversijos iš dienos į eilutę. Visi numeriai - nėra linijų. Be to, naudojant užsakymą: metai, mėnuo, diena taip pat leidžia teisingai rūšiuoti pagal datą.

Tiesiog galvokite už lauko ribų - JSON data neturėtų būti saugoma kaip eilutė.

Kita premija yra ta, kad galite lengvai (ir efektyviai) pasirinkti visus tam tikro metų ar mėnesio įrašus naudodami CouchDB metodą, kuris apdoroja užklausas pagal masyvo reikšmes.

16
17 июня '11 в 6:54 2011-06-17 06:54 atsakymą pateikė Nickas Perkinsas birželio 17 d. 11 val. 6:54 2011-06-17 06:54

Skelbimas į nuostabų siūlą:

 var d = new Date(parseInt('/Date(1224043200000)/'.slice(6, -2))); alert('' + (1 + d.getMonth()) + '/' + d.getDate() + '/' + d.getFullYear().toString().slice(-2)); 
15
26 сент. atsakymas duotas Dan Beam 26 sep. 2010-09-26 14:20 '10, 14:20, 2010-09-26 14:20

Norėdami pridėti kitokį požiūrį, „erkių“ metodas, kuris yra WCF , yra linkęs į problemų su laiko juostomis, jei nesate labai atsargūs, pavyzdžiui, čia ir kitose vietose. Todėl dabar naudoju ISO 8601 formatą, kuris palaiko .NET ir JavaScript, įskaitant laiko juostų kompensacijas. Žemiau pateikiami duomenys:

WCF / .NET:

Kur kūrimo data yra System.DateTime; „ToString“ („o“) naudoja „.NET“ apvalaus formato specifikaciją, kuri generuoja datą, atitinkančią ISO 8601

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

„Javascript“

Iš karto po to, kai išgryninsite JSON, pradėsiu nustatyti „JavaScript“ datos objektų datas, naudodamas „Data konstruktorius“, kuris laikosi ISO 8601 datos eilutės ...

 $.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()); } ) 

Kai tik turėsite „JavaScript“ datą, galite naudoti visus patogius ir patikimus „Data“ metodus, pvz., „ DDDDString“ , „ ToLocaleString“ ir kt.

14
24 мая '12 в 22:01 2012-05-24 22:01 atsakymą pateikė Scott Willeke , gegužės 24 d. 12 d., 10:01 val. 2012-05-24 22:01
 var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); 

Ar yra dar viena galimybė nenaudojant jQuery bibliotekos?

14
24 сент. Atsakymas duotas Bilgin Kılıç 24 sep. 2009-09-24 14:38 '09, 14:38, 2009-09-24 14:38
 var obj = eval('(' + "{Date: \/Date(1278903921551)\/}".replace(/\/Date\((\d+)\)\//gi, "new Date($1)") + ')'); var dateValue = obj["Date"]; 
9
01 июля '11 в 11:07 2011-07-01 11:07 atsakymas pateikiamas 在 路上 liepos 1 d. 11 val. 11:07 2011-07-01 11:07

Patikrinkite ISO standarto datą; panašaus pobūdžio:

 yyyy.MM.ddThh:mm 

Jis tampa 2008.11.20T22:18 .

8
20 нояб. Thomas Hansen atsakymas lapkričio 20 d 2008-11-20 12:18 '08, 12:18 2008-11-20 12:18

Gaunu šią datą:

 "/Date(1276290000000+0300)/" 

Kai kuriuose pavyzdžiuose data yra keliais skirtingais formatais:

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

ir kiti

Taigi, aš atėjau šiuos RegExp:

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

ir galutinis kodas yra:

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

Tikiuosi, kad tai padės.

Atnaujinimas: „Microsoft“ rado šią nuorodą: kaip nustatyti datas naudojant JSON?

Tai panaši į tą, kurią mes ieškome.

7
26 сент. Michael Vashchinsky atsakymas rugsėjo 26 d. 2010-09-26 14:07 '10, 14:07, 2010-09-26 14:07

Tai varginantis. Mano sprendimas buvo išanalizuoti „/ ir“ reikšmę iš ASP.NET JavaScriptSerializer sukurtos vertės, todėl, nors JSON gali neturėti datos, tai naršyklė vis dar aiškina kaip datą, bet tai yra tikrai noriu : {"myDate":Date(123456789)}

Pasirinktinis „JavaScriptConverter“ skirtas datetime?

Turiu pabrėžti Roy Tinker komentaro tikslumą. Tai negalioja JSON. Tai yra purvinas purvinas serveris, kad pašalintumėte problemą, kol ji tampa „JavaScript“ problema. Jis užgesins JSON analizatorių. Aš jį panaudojau, kad išlipčiau iš žemės, bet nebesinaudoju. Tačiau vis dar manau, kad geriausias atsakymas yra pakeisti datą, pavyzdžiui, ISO, kaip minėta kitur.

7
14 окт. „StarTrekRedneck“ atsakymas yra 14 okt. 2010-10-14 08:02 '10, 8:02, 2010-10-14 08:02

Žemiau yra gana paprastas sprendimas JSON datų analizavimui. Naudokite toliau nurodytas funkcijas, kad atitiktų jūsų poreikius. Jums reikia tiesiog perkelti JSON formatą. Data, pasirinkta kaip parametras šioms funkcijoms:

 function JSONDate(dateStr) { var m, day; jsonDate = dateStr; var d = new Date(parseInt(jsonDate.substr(6))); m = d.getMonth() + 1; if (m < 10) m = '0' + m if (d.getDate() < 10) day = '0' + d.getDate() else day = d.getDate(); return (m + '/' + day + '/' + d.getFullYear()) } function JSONDateWithTime(dateStr) { jsonDate = dateStr; var d = new Date(parseInt(jsonDate.substr(6))); var m, day; m = d.getMonth() + 1; if (m < 10) m = '0' + m if (d.getDate() < 10) day = '0' + d.getDate() else day = d.getDate(); var formattedDate = m + "/" + day + "/" + d.getFullYear(); var hours = (d.getHours() < 10) ? "0" + d.getHours() : d.getHours(); var minutes = (d.getMinutes() < 10) ? "0" + d.getMinutes() : d.getMinutes(); var formattedTime = hours + ":" + minutes + ":" + d.getSeconds(); formattedDate = formattedDate + " " + formattedTime; return formattedDate; } 
7
09 авг. atsakymą pateikė Umar Malik 09 rug. 2012-08-09 15:14 '12, 15:14 pm 2012-08-09 15:14

Įtraukite jQuery UI įskiepį į savo puslapį:

 function DateFormate(dateConvert) { return $.datepicker.formatDate("dd/MM/yyyy", eval('new ' + dateConvert.slice(1, -1))); }; 
7
29 июня '12 в 15:01 2012-06-29 15:01 atsakymą Thulasiram pateikė birželio 29 d. 12 val. 15:01 2012-06-29 15:01

Mootools sprendimas:

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

Reikalingas „motorools“. Išbandyta naudojant „motorools-1.2.3.1“ daugiau „Firefox 3.6.3“ ir „IE 7.0.5730.13“

6
13 мая '10 в 11:02 2010-05-13 11:02 Atsakymą pateikė Midhat , gegužės 13 d., 10 val. 11:02 2010-05-13 11:02

Taip pat galite naudoti javascript library.js , kuris yra naudingas, kai planuojate tvarkyti įvairius lokalizuotus formatus ir atlikti kitas operacijas su datos reikšmėmis:

 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; } 

Vietos nustatymas yra taip pat lengva, kaip į savo projektą pridėti konfigūracijos failus (juos gauti momentjs.com) ir nustatyti kalbą:

 moment.> 
6
15 мая '13 в 9:21 2013-05-15 09:21 atsakymą Martinoss pateikia gegužės 15 d. 13 val. 9:21 2013-05-15 09:21

Vėlyvas pranešimas, bet tiems, kurie ieško šio įrašo.

Įsivaizduokite:

  [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"); } 

Kaip matote, naudoju „C # 3.0“ funkciją „Auto“ generikai sukurti. Tai šiek tiek tingus, bet man tai patinka ir jis veikia. Tik pastaba: profilis yra speciali klasė, kurią sukūriau savo interneto taikomųjų programų projektui.

6
23 окт. Ray Linder atsakymą pateikė spalio 23 d. 2009-10-23 09:39 '09 9:39 2009-10-23 09:39

FYI, visiems, kurie naudoja Python serverio pusėje: datetime.datetime (). ctime () grąžina eilutę, kuri yra paveldėta pagal „naują datą“ (). Tai yra, jei sukuriate naują datetime.datetime egzempliorių (pvz., Su datetime.datetime.now), eilutė gali būti įtraukta į JSON eilutę, o tada ši eilutė gali būti perduodama kaip pirmasis argumentas datos konstruktoriui. Aš dar neradau jokių išimčių, bet taip pat netikrinau, kad tai būtų griežtai.

5
08 июля '10 в 4:19 2010-07-08 04:19 atsakymą pateikė Kyle Alan Hale, liepos 8 d., 10 d., 4:19, 2010-07-08 04:19

Что делать, если .NET возвращается...

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