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

Thulasiram Punkte 8220

Fügen Sie die jQuery UI Plugin auf Ihrer Seite:

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

8voto

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

8voto

Ray Linder Punkte 129

Ein später Beitrag, aber für diejenigen, die diesen Beitrag gesucht haben.

Stellen Sie sich Folgendes vor:

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

Wie Sie sehen können, nutze ich die Funktion von C# 3.0 für die Erstellung der "Auto"-Generics. Es ist ein bisschen faul, aber ich mag es und es funktioniert. Nur ein Hinweis: Profil ist eine benutzerdefinierte Klasse, die ich für mein Webanwendungsprojekt erstellt habe.

0 Stimmen

Jedes Mal, wenn Sie eine neue Rolle hinzufügen [Authorize(Roles = "Human Resources")], müssen Sie also kompilieren und bereitstellen? wow.... :)

1 Stimmen

Wenn dies ein JSON-Dienst ist, dann scheint die Umleitung falsch zu sein. Ich würde eine 404 Not Found zurückgeben, wenn der Eingabeschlüssel so ungültig ist, dass er unmöglich gefunden werden kann (und auch 404, wenn er wirklich nicht gefunden wird). Wenn meine Benutzer nicht eingeloggt sind, gebe ich 403 Forbidden zurück.

0 Stimmen

Es ist eine "wiederverwendbare" Methode. Wenn ich z. B. Benutzerdaten aus einer anderen Ansicht abrufen möchte, kann ich sie abrufen, solange ich die Kennung angebe. Wenn jedoch die Id nicht angegeben wird, leitet die Seite zu einer Liste von Benutzern (Index) weiter, um einen Benutzer auszuwählen. Eine einfache Lösung für die Anwendung, so wie ich sie mir damals ausgedacht habe.

8voto

Juan Carlos Puerto Punkte 2454

Was wäre, wenn .NET kehrt zurück...

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

Und dann in JavaScript...

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

8voto

Midhat Punkte 16900

Mootools Lösung:

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

Erfordert mootools-more. Getestet mit mootools-1.2.3.1-more auf Firefox 3.6.3 und IE 7.0.5730.13

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