2162 Stimmen

Wie formatiere ich ein Microsoft JSON-Datum?

Ich versuche mich zum ersten Mal an Ajax mit jQuery. Ich bin immer meine Daten auf meine Seite, aber ich habe einige Probleme mit den JSON-Daten, die für Datum Datentypen zurückgegeben wird. Im Grunde bekomme ich eine Zeichenfolge zurück, die wie folgt aussieht:

/Date(1224043200000)/

Von jemandem völlig neu zu JSON - Wie formatiere ich dies zu einem kurzen Datum Format? Sollte dies irgendwo in der jQuery-Code behandelt werden? Ich habe versucht, die jQuery.UI.datepicker Plugin mit $.datepicker.formatDate() ohne jeden Erfolg.

Zu Ihrer Information: Hier ist die Lösung, die ich mit einer Kombination aus den Antworten hier gefunden habe:

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

Diese Lösung erhielt mein Objekt von der Callback-Methode und zeigte die Daten auf der Seite richtig mit der Datumsformat-Bibliothek.

27 Stimmen

Das könnte interessant sein: hanselman.com/blog/

10 Stimmen

Das Format /Date(...)/ ist spezifisch für Microsofts eingebautes JSON-Datumsformat - es ist nicht Teil eines Standards, und JSON, das von Javascript kommt, hat einen Standard: Das ISO-Format, das Javascript spezifiziert: stackoverflow.com/a/15952652/176877 Diese Frage bezieht sich also auf das JSON-Date-Format von Microsoft. Ich habe den Titel geändert, um dies zu verdeutlichen.

19 Stimmen

Das ist ein Scherz! Microsoft hat JSON seinen eigenen Stempel aufgedrückt! und auf Daten!! Wann lernen sie es endlich!

8voto

Kyle Alan Hale Punkte 21

Zu Ihrer Information, für alle, die Python auf der Serverseite verwenden: datetime.datetime().ctime() gibt eine Zeichenkette zurück, die nativ von "new Date()" geparst werden kann. Das heißt, wenn Sie eine neue datetime.datetime-Instanz erstellen (z. B. mit datetime.datetime.now), kann die Zeichenkette in die JSON-Zeichenkette aufgenommen werden, und dann kann diese Zeichenkette als erstes Argument an den Date-Konstruktor übergeben werden. Ich habe noch keine Ausnahmen gefunden, aber ich habe es auch noch nicht allzu gründlich getestet.

7voto

Im folgenden Code. Ich habe

1. Ruft den Zeitstempel aus der Datumszeichenfolge ab.

2. Und analysierte es in Int

3. Schließlich wurde ein Date es zu benutzen.

var dateString = "/Date(1224043200000)/";
var seconds = parseInt(dateString.replace(/\/Date\(([0-9]+)[^+]\//i, "$1"));
var date = new Date(seconds);
console.log(date);

4voto

Safeer Hussain Punkte 1194

Nebenbei bemerkt, unterstützt KendoUI die Konvertierung von Microsoft JSON Daten. Wenn Ihr Projekt also den Verweis auf "KendoUI" hat, können Sie einfach verwenden

var newDate = kendo.parseDate(jsonDate);

4voto

Vlad Bezden Punkte 71128

Dabei wird ein regulärer Ausdruck und es funktioniert auch:

var date = new Date(parseInt(/^\/Date\((.*?)\)\/$/.exec(jsonDate)[1], 10));

3voto

Luminous Punkte 1646

Ein weiteres Regex-Beispiel, das Sie ausprobieren können:

var mydate = json.date
var date = new Date(parseInt(mydate.replace(/\/Date\((-?\d+)\)\//, '$1');
mydate = date.getMonth() + 1 + '/' + date.getDate() + '/' + date.getFullYear();

date.getMonth() gibt eine ganze Zahl zwischen 0 und 11 zurück, so dass wir 1 addieren müssen, um die richtige Monatszahl zu erhalten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X