36 votes

Comment passer une valeur de date JSON via ASP.NET MVC à l'aide de JSON.Net?

Dupliquer possible:
Comment formater une date JSON?

ASP.NET Json () formate et renvoie une date sous la forme

 {"d":"\/Date(1240718400000)\/"}
 

qui doit être traité avec le côté client qui est problématique. Quelles sont vos suggestions d’approches pour l’envoi de valeurs de date?

Merci

29voto

Jimbo Points 5133

Ceci trouvé dans un autre post sur stackoverflow:

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

La fonction substr supprime la partie "\ / Date (") et la fonction parseInt obtient le nombre entier et ignore le ") \ /" à la fin. Le nombre résultant est passé dans le constructeur Date

11voto

Ryan Taylor Points 3091

Si vous n'êtes pas lié à la MS sérialiseur JSON que vous pourriez utiliser Json.NET. Il est livré avec un IsoDateTimeConverter à gérer les problèmes avec la sérialisation de dates. Cela va sérialiser des dates dans un format ISO 8601 chaîne formatée.

Par exemple, dans notre projet de sérialisation myObject est géré par le code suivant.

JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
jsonNetResult.Data = myObject;

Si vous décidez de prendre le Json.NET plongez vous aurez aussi envie de prendre JsonNetResult qu'elle retourne un ActionResult qui peuvent être utilisés dans ASP.NET application MVC. Il est très facile à utiliser.

Pour plus d'infos, voir: Bonne (Date)Fois avec Json.NET

6voto

Felix Points 910

C'est peut-être moche, mais ça marche:

  var epoch = (new RegExp('/Date\\((-?[0-9]+)\\)/')).exec(d);
 $("#field").text((new Date(parseInt(epoch[1]))).toDateString());
 

Probablement, il n'est pas nécessaire de faire correspondre la chaîne entière, et juste (-? [0-9] +) est suffisant ...

5voto

Dave Ward Points 36006

Tout le monde n’est pas d’accord avec moi pour dire que c’est une bonne idée, mais je me retrouve le plus souvent à renvoyer des chaînes formatées au lieu de dates appropriées: http://encosia.com/2009/04/27/how-i-handle-json-dates-returned -by-aspnet-ajax /

1voto

brow-cow Points 21

Après avoir joué avec le JsonNet bibliothèque, je me demandais pourquoi vous choisissez d'utiliser le IsoDateTimeConverter sur le JavascriptDateTimeConverter.

J'ai trouvé ceci pour être plus facile à utiliser avec la ExtJS interfaces que j'ai utilisé lors de la sérialisation des dates à partir de l'un Contrôleur MVC.

JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.SerializerSettings.Converters.Add(new JavaScriptDateTimeConverter());
jsonNetResult.Data = myObject;

Je suis de ces données dans un Poste.les données.JsonStore qui est capable d'obtenir la valeur retournée comme une date sans avoir à me spécifier un format de date à analyser avec.

        store:new Ext.data.JsonStore({
            url: pathContext + '/Subject.mvc/Notices',
            baseParams: { subjectId: this.subjectId },
            fields: [
               {name: 'Title'},
               {name: 'DateCreated', type: 'date' }
            ]
        }),

Le Json retourné ressemble à ceci:

[{"Title":"Some title","DateCreated":new Date(1259175818323)}]

Aucune raison de le convertir au format ISO 8601 et le dos si vous n'avez pas à?

Merci,

CBrown

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X