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
Réponses
Trop de publicités?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
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
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 /
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