Microsoft JSON tarihini nas─▒l bi├žimlendiririm?


Al─▒nan cevaba git


Ben benim ilk ├žatlak al─▒yorum Ajax jQuery ile. Verilerimi sayfama ekliyorum, ancak Date veri t├╝rleri i├žin d├Ând├╝r├╝len JSON verileriyle ilgili biraz sorun ya┼č─▒yorum. Temel olarak, ┼čuna benzeyen bir dize al─▒yorum:

 /Date(1224043200000)/
 

Tamamen yeni bir ki┼čiden JSON'a - Bunu k─▒sa tarih bi├žimine nas─▒l formatlar─▒m? Bu, jQuery kodunda bir yerde kullan─▒lmal─▒ m─▒? jQuery.UI.datepicker Eklentiyi $.datepicker.formatDate() herhangi bir ba┼čar─▒ olmadan kullanarak denedim .

Bilginize: ─░┼čte burada cevaplar─▒n bir kombinasyonunu kullanarak geldi ├ž├Âz├╝m:

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

Bu ├ž├Âz├╝m nesneyi geri ├ža─č─▒rma y├Ânteminden ald─▒ ve tarih format kitapl─▒─č─▒n─▒ kullanarak sayfadaki tarihleri ÔÇőÔÇőd├╝zg├╝n bir ┼čekilde g├Âr├╝nt├╝ledi.


1942









Cevap say─▒s─▒n─▒ say: 30






eval() gerekli de─čil. Bu i┼če yarayacak:

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

substr() Fonksiyon al─▒r /Date( b├Âl├╝m├╝n├╝ ve parseInt() fonksiyon tamsay─▒ al─▒r ve yok sayar )/ sonunda. Ortaya ├ž─▒kan say─▒ yap─▒c─▒ya iletilir Date .


Ben kas─▒tl─▒ olarak radix'i b─▒rakt─▒m (2. arg├╝man parseInt ); bkz a┼ča─č─▒da yorumumu .

Ayr─▒ca, Rory'nin yorumuna tamamen kat─▒l─▒yorum : ISO-8601 tarihleri ÔÇőÔÇőbu eski formatta tercih edilir - bu y├╝zden bu format genellikle yeni geli┼čtirme i├žin kullan─▒lmamal─▒d─▒r. ISO-8601 format─▒n─▒ kullanarak tarihleri ÔÇőÔÇőseri hale getiren m├╝kemmel bir alternatif i├žin m├╝kemmel Json.NET k├╝t├╝phanesine bak─▒n .

ISO-8601 formatl─▒ JSON tarihleri ÔÇőÔÇői├žin dizeyi yap─▒c─▒ya iletin Date :

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

1654







JSON'dan bir tarih almak i├žin bunu kullanabilirsiniz:

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

Sonra istedi─činiz gibi g├Âr├╝nt├╝lemek i├žin bir JavaScript Tarih Format─▒ komut dosyas─▒ (k├╝├ž├╝lt├╝lm├╝┼č ve gzip edildi─činde 1,2 KB) kullanabilirsiniz.


127







Newtonsoft Json.NET kullananlar i├žin , IE8, Firefox 3.5 ve Json.NET'teki Native JSON arac─▒l─▒─č─▒yla nas─▒l yap─▒laca─č─▒n─▒ okuyun .

Ayr─▒ca, Json.NET taraf─▒ndan yaz─▒lan tarihlerin format─▒n─▒n de─či┼čtirilmesine ili┼čkin belgeler de faydal─▒d─▒r: Tarihleri ÔÇőÔÇőJson.NET ile seri hale getirmek

├çok tembel olanlar i├žin, i┼čte h─▒zl─▒ ad─▒mlar. JSON'un gev┼ček bir DateTime uygulamas─▒ oldu─čundan, kullanman─▒z gerekir IsoDateTimeConverter() . Json.NET 4.5ÔÇÖten bu yana varsay─▒lan tarih format─▒n─▒n ISO oldu─čunu ve a┼ča─č─▒daki kodun gerekli olmad─▒─č─▒n─▒ unutmay─▒n.

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

JSON olarak gelecek

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

Son olarak, ISO tarihini bir JavaScript tarihine d├Ân├╝┼čt├╝rmek i├žin baz─▒ JavaScript'ler:

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

Bu ┼čekilde kulland─▒m

 $("<span />").text(isoDateReviver(item.fieldName).toLocaleString()).appendTo("#" + divName);
 

95







Orijinal ├Ârnek:

 /Date(1224043200000)/  
 

WCF taraf─▒ndan yerle┼čik JSON serile┼čtirme kullan─▒larak WCF REST ile tarih g├Ânderilirken kullan─▒lan bi├žimlendirmeyi yans─▒tmaz. (en az─▒ndan .NET 3.5, SP1ÔÇÖde)

Cevab─▒ burada faydal─▒ buldum, ancak WCF JSONÔÇÖda (1970ÔÇÖten bu yana) geri g├Ânderilen numaraya eklendi─či anla┼č─▒lan, regexÔÇÖe k├╝├ž├╝k bir d├╝zenleme yap─▒lmas─▒ gerekiyor.

WCF hizmetinde a┼ča─č─▒dakilere sahibim:

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

ApptVisitLinkInfo basit├že tan─▒mlanm─▒┼čt─▒r:

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

"Alan2" hizmetten Json olarak d├Ând├╝r├╝ld├╝─č├╝nde de─čer:

 /Date(1224043200000-0600)/
 

De─čerin bir par├žas─▒ olarak dahil edilen saat dilimi fark─▒na dikkat edin.

De─či┼čtirilen regex:

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

Biraz daha istekli ve sadece ilk say─▒ de─čil, parenler aras─▒ndaki her ┼čeyi kapt─▒. Sonu├žta ortaya ├ž─▒kan zaman 1970'i bozar, art─▒ saat dilimi ofseti, bir tarih nesnesi elde etmek i├žin de─čerlendirme ile beslenebilir.

De─či┼čim i├žin sonu├žta ortaya ├ž─▒kan JavaScript sat─▒r─▒:

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

65







Kendinizi tekrar etmeyin - kullanarak tarihi d├Ân├╝┼čt├╝rmeyi otomatikle┼čtirin $.parseJSON()

G├Ânderinize verilen yan─▒tlar, JavaScript tarihlerine manuel tarih d├Ân├╝┼č├╝m├╝ sa─člar. JQuery'nin $.parseJSON() biraz─▒n─▒ uzatt─▒m, bu y├╝zden talimat verdi─činizde tarihleri ÔÇőÔÇőotomatik olarak ayr─▒┼čt─▒rmay─▒ ba┼čarabiliyorum. Taray─▒c─▒larda (ve json2.js gibi k├╝t├╝phanelerde) yerel JSON i┼člevleri taraf─▒ndan desteklenen ASP.NET bi├žimlendirilmi┼č tarihleri ÔÇőÔÇő( /Date(12348721342)/ ) ve ISO bi├žimlendirilmi┼č tarihleri ÔÇőÔÇő( 2010-01-01T12.34.56.789Z ) i┼čler.

Neyse. Tarih d├Ân├╝┼č├╝m kodunuzu tekrar tekrar tekrarlamak istemiyorsan─▒z, bu blog g├Ânderisini okuman─▒z─▒ ve hayat─▒n─▒z─▒ biraz daha kolayla┼čt─▒racak kodu alman─▒z─▒ ├Âneririm .


63







JavaScriptÔÇÖte s├Âylerseniz,

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

Bunun do─čru tarih oldu─čunu g├Âreceksiniz ve bunu herhangi bir ├žer├ževede JavaScript kodunda herhangi bir yerde kullanabilirsiniz.


60







Demoyu kontrol etmek i├žin buraya t─▒klay─▒n

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

Sonu├ž - "10.05.2008"


59







G├╝ncellenmi┼č

Hem Microsoft'un ASP.NET yerle┼čik JSON format─▒yla ba┼ča ├ž─▒kmak zorunda oldu─ču gibi, hem de /Date(msecs)/ burada orijinal olarak sorulan ve JSON.NET'in de dahil oldu─ču ├žo─ču JSON'un tarih format─▒yla ba┼ča ├ž─▒kmak zorunda olan bir dahili UI kitapl─▒─č─▒m─▒z var 2014-06-22T00:00:00.0 . Ek olarak, oldIE'nin 3 ondal─▒k basamak d─▒┼č─▒ndaki herhangi bir ┼čeyle ba┼č edememesiyle ba┼ča ├ž─▒kmam─▒z gerekiyor .

─░lk ├Ânce ne t├╝r tarihler kulland─▒─č─▒m─▒z─▒ tespit ettik, normal bir JavaScript Date nesnesine g├Âre ayr─▒┼čt─▒r─▒p formatlay─▒n.

1) Microsoft Tarih bi├žimini alg─▒la

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

2) ISO tarih bi├žimini alg─▒la

 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) Ayr─▒┼čt─▒rma MS tarih format─▒:

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

4) Ayr─▒┼čt─▒rma ISO tarih format─▒.

En az─▒ndan standart olarak ISO tarihleriyle veya her zaman ├╝├ž milisaniyede yer alacak ┼čekilde de─či┼čtirilmi┼č ISO tarihleriyle ( yukar─▒ bak─▒n ) ilgilendi─čimizden emin olmak i├žin bir y├Ântemimiz var , bu nedenle kod ├ževreye ba─čl─▒ olarak farkl─▒.

4a) Standart ISO Tarih bi├žimini ├ž├Âz├╝mleyin, oldIE ile ilgili sorunlar─▒ ele al─▒n:

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

4b) Sabit ├╝├ž milisaniyelik ondal─▒k basamakla ISO format─▒n─▒ ayr─▒┼čt─▒rma - ├žok daha kolay:

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

5) Bi├žimlendir:

 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) Hepsini birbirine ba─člay─▒n:

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

    return formatDate(d);
}
 

A┼ča─č─▒daki eski cevap, bu tarih format─▒n─▒ jQuery'nin kendi JSON ayr─▒┼čt─▒rmas─▒na ba─člamak i├žin kullan─▒┼čl─▒d─▒r, b├Âylece dizgiler yerine Date nesneleri elde edersiniz ya da hala bir ┼čekilde jQuery <1.5 ile tak─▒l─▒ kal─▒rsan─▒z.

Eski cevap

JQuery 1.4'├╝n Ajax i┼člevini ASP.NET MVC ile kullan─▒yorsan─▒z, t├╝m DateTime ├Âzelliklerini Date nesnelerine d├Ân├╝┼čt├╝rebilirsiniz:

 // Once
jQuery.parseJSON = function(d) {return eval('(' + d + ')');};

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

JQuery 1.5'te parseJSON , Ajax ├ža─čr─▒s─▒ndaki d├Ân├╝┼čt├╝r├╝c├╝ler se├žene─čini kullanarak, y├Ântemi genel olarak ge├žersiz k─▒lmaktan ka├ž─▒nabilirsiniz .

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

Ne yaz─▒k ki, Tarihlerin global olarak yerinde ayr─▒┼čt─▒r─▒lmas─▒ i├žin eski de─čerlendirme yoluna ge├žmeniz gerekiyor - aksi takdirde bunlar─▒ ayr─▒┼čt─▒rma sonras─▒ daha fazla duruma g├Âre d├Ân├╝┼čt├╝rmeniz gerekir.


37







Ayr─▒ca bu soruna bir ├ž├Âz├╝m aramak zorunda kald─▒m ve sonunda bu tarih bi├žimini ve daha fazlas─▒n─▒ ayr─▒┼čt─▒rabilecek g├╝zel bir k├╝t├╝phane olan moment.js ile kar┼č─▒la┼čt─▒m.

 var d = moment(yourdatestring)
 

Benim i├žin biraz ba┼č a─čr─▒s─▒ kurtard─▒, ben de seninle payla┼čaca─č─▒m─▒ d├╝┼č├╝nd├╝m. :)
Bununla ilgili daha fazla bilgiyi burada bulabilirsiniz: http://momentjs.com/


24







JSON'da yerle┼čik bir tarih t├╝r├╝ yok . Bu, baz─▒ ├ža─člardan gelen saniye / milisaniye say─▒s─▒ gibi g├Âr├╝n├╝yor. D├Ânemi biliyorsan─▒z, do─čru zamanda ekleyerek tarihi olu┼čturabilirsiniz.


23







Nesneleri bir sat─▒r i├ži komut dosyas─▒na yazarken Microsoft seri hale getirici taraf─▒ndan olu┼čturulan karakterlerden kurtulmak i├žin "karakterleri Panos'un normal ifadesine eklemeyi b─▒rakt─▒m:

Yani C # kodunuzun ard─▒nda bir ├Âzellik varsa, bunun gibi bir ┼čey

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

Ve aspx'inizde

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

Gibi bir ┼čey al─▒rs─▒n

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

Çift tırnak dikkat edin.

Bunu, de─čerlendirmenin do─čru bir ┼čekilde seri hale gelece─či bir forma sokmak i├žin kulland─▒m:

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

Kulland─▒─č─▒m Prototype ve kullanmak ekledim i├žin

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

23







JQuery 1.5'te, eski taray─▒c─▒lar─▒ kapsayacak json2.js kodunuz oldu─ču s├╝rece , Ajax'tan gelen t├╝m tarihleri ÔÇőÔÇőa┼ča─č─▒daki gibi seri hale getirebilirsiniz:

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

Sunucudaki t├╝m tarihleri ÔÇőÔÇőUTC (g├Ândermeniz gereken) olarak g├Ânderdi─činizi varsayan mant─▒─č─▒ dahil ettim; T├╝ketici daha sonra, Date bunu yans─▒tmak i├žin uygun keneler de─čerine sahip bir JavaScript nesnesi elde eder. Di─čer bir deyi┼čle, getUTCHours() tarihte arama yapmak vb. Sunucuda oldu─ču gibi ayn─▒ de─čeri getHours() d├Ând├╝r├╝r ve ├ža─čr─▒ yapmak kullan─▒c─▒n─▒n taray─▒c─▒s─▒ taraf─▒ndan belirlenen yerel saat dilimindeki de─čeri d├Ând├╝r├╝r.

Bu, zaman dilimi uzakl─▒─č─▒ olan WCF format─▒n─▒ hesaba katmaz , ancak eklenmesi nispeten kolay olacakt─▒r.


21







Bunu fazla d├╝┼č├╝nme. On y─▒llard─▒r yapt─▒─č─▒m─▒z gibi, bu devirden bu yana saniye (veya milisaniye) cinsinden 1 Ocak 1970 gece yar─▒s─▒ GMT / UTC / & c'nin fiili standart d├Âneminden say─▒sal bir denge ge├žirin. JavaScript onu sever, Java onu sever, C onu sever ve Internet onu sever.


19







JQuery UI datepicker'─▒ kullanma - ger├žekten, yaln─▒zca zaten jQuery UI'y─▒ dahil ediyorsan─▒z anlaml─▒d─▒r:

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

├ž─▒kt─▒:

15 Ekim 2008


19







Bu cevaplar─▒n herkesin ortak bir ├Âzelli─či var: hepsi depoda tek bir de─čer (genellikle bir dize) olarak tarihler.

Ba┼čka bir se├ženek JSON'un i├žsel yap─▒s─▒ndan yararlanmak ve say─▒lar─▒n listesi olarak bir tarihi temsil etmektir:

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

Elbette, konu┼čman─▒n her iki ucunun da formatta (y─▒l, ay, g├╝n) ve hangi alanlar─▒n tarih olmas─▒ gerekti─čine karar verdi─činden emin olmal─▒s─▒n─▒z, ancak tarih konusunu tamamen ├Ânleme avantaj─▒na sahiptir -dize d├Ân├╝┼čt├╝rme. Hepsi rakamlar - hi├ž ip yok. Ayr─▒ca, sipari┼či kullanarak: y─▒l, ay, g├╝n ayr─▒ca tarihe g├Âre uygun s─▒ralama sa─člar.

Burada kutunun d─▒┼č─▒nda sadece d├╝┼č├╝nmek - bir JSON tarihinin dizge olarak kaydedilmesi gerekmez.

Bu ┼čekilde yapman─▒n bir ba┼čka avantaj─▒ da, CouchDB'nin dizi de─čerleriyle ilgili sorgular─▒ i┼čleme y├Ântemini kullanarak belirli bir y─▒l veya ay i├žin t├╝m kay─▒tlar─▒ kolayca (ve verimli bir ┼čekilde) se├žebilmenizdir .


18







Harika konuya g├Ânderme:

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

16







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

JQuery k├╝t├╝phanesini kullanmadan ba┼čka bir se├ženek var m─▒?


15







Buraya ba┼čka bir yakla┼č─▒m eklemek i├žin, WCF'nin uygulad─▒─č─▒ "keneler yakla┼č─▒m─▒", burada ve ba┼čka yerlerde a├ž─▒kland─▒─č─▒ gibi ├žok dikkatli de─čilseniz, saat dilimleri ile ilgili sorunlara e─čilimlidir . Bu y├╝zden ┼čimdi hem .NET hem de JavaScript'in zaman dilimi ofsetlerini i├žeren usul├╝n├╝ destekledi─či ISO 8601 bi├žimini kullan─▒yorum. Detaylar a┼ča─č─▒da:

WCF / .NET'te:

CreationDate bir System.DateTime oldu─čunda; ToString ("o"), ISO 8601 uyumlu bir tarih dizesi olu┼čturan .NET'in Gidi┼č-D├Ân├╝┼č bi├žimi belirticisini kullan─▒yor

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

JavaScript'te

JSON u ald─▒ktan hemen sonra, ISO 8601 tarih dizesini kabul eden Date yap─▒c─▒s─▒n─▒ kullanarak JavaSript Date nesneleri olacak tarihleri ÔÇőÔÇőd├╝zeltmeye gidiyorum ...

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

Bir JavaScript tarihine sahip oldu─čunuzda, toDateString , toLocaleString , vs. gibi t├╝m uygun ve g├╝venilir Tarih y├Ântemlerini kullanabilirsiniz .


15







Bu size yard─▒mc─▒ olabilir.

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

10







B├Âyle bir randevu al─▒yorum:

 "/Date(1276290000000+0300)/"
 

Baz─▒ ├Ârneklerde tarih biraz farkl─▒ bi├žimlerdedir:

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

vb.

Bu y├╝zden a┼ča─č─▒daki RegExp ile geldi:

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

ve son kod:

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

Umar─▒m yard─▒mc─▒ olur.

G├╝ncelle┼čtirme: Bu ba─člant─▒y─▒ Microsoft'tan buldum: Tarihleri ÔÇőÔÇőJSON ile nas─▒l seri hale getiririm?

Bu hepimizin arad─▒─č─▒ gibi g├Âr├╝n├╝yor.


9







 var obj = eval('(' + "{Date: \/Date(1278903921551)\/}".replace(/\/Date\((\d+)\)\//gi, "new Date($1)") + ')');
var dateValue = obj["Date"];
 

9







ISO standard─▒ tarihini kontrol edin; Bunun gibi:

 yyyy.MM.ddThh:mm
 

Olur 2008.11.20T22:18 .


9







Bu sinir bozucu. Benim ├ž├Âz├╝m├╝m, ASP.NET'in JavaScriptSerializer'─▒ taraf─▒ndan ├╝retilen de─čerden "/ ve /" yi ayr─▒┼čt─▒rmakt─▒, b├Âylece JSON bir tarih bilgisine sahip olmasa da, taray─▒c─▒ taraf─▒ndan bir tarih olarak yorumlanmaya devam etti. istemek: {"myDate":Date(123456789)}

DateTime i├žin ├ľzel JavaScriptConverter?

Roy Tinker'in yorumunun do─črulu─čunu vurgulamal─▒y─▒m. Bu yasal bir JSON de─čil. Sorunu JavaScript i├žin bir sorun haline gelmeden ├Ânce kald─▒rmak, sunucu ├╝zerinde kirli ve kirli bir kesmek. Bir JSON ayr─▒┼čt─▒r─▒c─▒s─▒n─▒ bo─čacakt─▒r. Yerden ├ž─▒kmak i├žin kulland─▒m, ama art─▒k kullanm─▒yorum. Ancak, en iyi yan─▒t─▒n, sunucunun tarihi, ├Ârne─čin ba┼čka bir yerde de belirtildi─či gibi ISOÔÇÖyu bi├žimlendirme ┼čeklinin de─či┼čtirilmesine ba─čl─▒ oldu─čunu d├╝┼č├╝n├╝yorum.


9







Ekle jQuery UI sayfan─▒za eklentisi:

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

9







JSON tarihlerini ayr─▒┼čt─▒rmak i├žin olduk├ža basit bir ├ž├Âz├╝m a┼ča─č─▒dad─▒r. ─░ste─činize g├Âre a┼ča─č─▒daki fonksiyonlar─▒ kullan─▒n. Sadece a┼ča─č─▒daki fonksiyonlara parametre olarak al─▒nan JSON format─▒n─▒ ge├žmelisiniz:

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

9







Farkl─▒ yerelle┼čtirilmi┼č bi├žimlerle u─čra┼čmay─▒ planlad─▒─č─▒n─▒zda ve tarih de─čerleriyle di─čer i┼člemleri ger├žekle┼čtirmeyi planlad─▒─č─▒n─▒zda kullan─▒┼čl─▒ olan JavaScript kitapl─▒─č─▒ moment.js'yi de kullanabilirsiniz :

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

Yerelle┼čtirmeyi ayarlamak, projenize yap─▒land─▒rma dosyalar─▒ eklemek (bunlar─▒ momentjs.com adresinde bulabilirsiniz) ve dili yap─▒land─▒rmak kadar kolayd─▒r:

 moment.lang('de');
 

9







Ge├ž bir yaz─▒, ancak bu yaz─▒y─▒ arayanlar i├žin.

Hayal et:

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

G├Ârd├╝─č├╝n├╝z gibi, "Oto" Generics olu┼čturmak i├žin C # 3.0 ├Âzelli─čini kullan─▒yorum. Biraz tembel, ama ho┼čuma gitti ve i┼če yar─▒yor. Sadece bir not: Profil, web uygulama projem i├žin olu┼čturdu─čum ├Âzel bir s─▒n─▒ft─▒r.


8







Mootools ├ž├Âz├╝m├╝:

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

Mootools-gerektirir. Firefox 3.6.3 ve IE 7.0.5730.13'te mootools-1.2.3.1-more kullan─▒larak test edilmi┼čtir


8







FYI, sunucu taraf─▒nda Python kullanan herkes i├žin: datetime.datetime (). Ctime (), "new Date ()" taraf─▒ndan yerel olarak ayr─▒┼čt─▒r─▒labilir bir dize d├Ând├╝r├╝r. Di─čer bir deyi┼čle, yeni bir datetime.datetime ├Ârne─či (├Ârne─čin, datetime.datetime.now gibi) olu┼čturursan─▒z, dize JSON dizgesine dahil edilebilir ve daha sonra bu dize Date yap─▒c─▒s─▒na ilk arg├╝man olarak ge├žirilebilir. Hen├╝z bir istisna bulamad─▒m, ancak ben de ├žok fazla test etmedim.


7







Ya .NET d├Ânerse ...

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

Ve sonra JavaScriptÔÇÖte ...

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

7



─░lgili yay─▒nlar


JSON verilerini Curl ile bir terminalden / komut sat─▒r─▒ndan Test Spring REST'e nas─▒l POST yapabilirim?

JavaScript tarihi nas─▒l bi├žimlendirilir?

JSON verilerini bir dosyaya nas─▒l yazar─▒m?

Windows komut sat─▒r─▒ndaki ge├žerli tarih / saati bir dosya / klas├Âr ad─▒nda kullan─▒m i├žin uygun bir bi├žimde nas─▒l alabilirim?

Datetime Python mod├╝l├╝n├╝ kullanarak bu tarihten itibaren alt─▒ ay tarihini nas─▒l hesaplar─▒m?

JSON'u Ruby on Rails ile nas─▒l ayr─▒┼čt─▒rabilirim? [├žift]

Java'da zamans─▒z nas─▒l Tarih alabilirim?

Bir UTC tarihini NodeJS kullanarak `YYYY-AA-GG ss: dd: ss` dizgesi olarak nas─▒l bi├žimlendiririm?

Python'da bir tarih string format─▒n─▒ nas─▒l do─črular─▒m?

JAXB xsd: dateTime marshals yaparken kullan─▒lan tarih bi├žimini nas─▒l belirlersiniz?

Etiketle ilgili di─čer sorular [jquery]


─░┼čaret├ži de─či┼čkeni ile C++ 'daki referans de─či┼čkeni aras─▒ndaki farklar nelerdir?

YouTube API's─▒ndan bir YouTube videosu k├╝k resmini nas─▒l alabilirim?

JavaScriptÔÇÖle bitiyor

Bir de─či┼čkenin olup olmad─▒─č─▒n─▒ nas─▒l kontrol edebilirim?

Git forks asl─▒nda Git klonlar─▒ m─▒?

Garip istenmeyen Xcode g├╝nl├╝klerini gizle

1 milyon 8 basamakl─▒ say─▒y─▒ 1 MB RAM'de s─▒ralama

Dizeleri, birden fazla s├Âzc├╝k s─▒n─▒rlay─▒c─▒s─▒ olan s├Âzc├╝klere b├Âlme

Java'da Milisaniye'yi ÔÇťX dakika, x saniyeÔÇŁ e nas─▒l d├Ân├╝┼čt├╝rebilirim?

Ba┼čka nas─▒l * ngIf kullan─▒l─▒r?