J'ai le problème suivant: p>
Je récupère un objet DateTime de SQL Server et passez-le via JSON (en utilisant $ .ajax) à JavaScript. J'ai eu des difficultés à essayer de convertir l'objet récupéré à un objet de date dans JavaScript. L'objet récupéré est une chaîne de valeur »/ date (615592800000) /». Je pense que la valeur est une époque époque. P>
Ma question est là, existe-t-il un autre moyen de récupérer l'objet de date que d'utiliser RegEx pour sélectionner la valeur EPOCH, puis créer un nouvel objet de date? P>
Je suis assez nouveau à JS, alors toute aide serait appréciée. P>
4 Réponses :
pas que je sache ... c'est la fonction que j'utilise, juste au cas où ...
function toDateFromJson(src) { return new Date(parseInt(src.substr(6))); }
THX. Pas exactement ce que je cherchais, mais c'est assez simple et utilisable.
Ceci est parce que JSON en standard n'a pas de format DateTime - les fournisseurs sont libres de le marquer comme ils le souhaitent. WCF a ce format étrange de / date () /
Je suis confronté à cela il y a quelques mois.
Utiliser JQuery et JQuery UI, il ressemblera à cela. contrôlé est l'identifiant d'un élément avec
La voie Regex est la voie parfaitement correcte.
var msDateRegex = /"\\\/Date\((-?\d+)\)\\\/"/g; var msDateJsonConverter = function(data) { return JSON.parse($.trim(data.replace(msDateRegex, '{"__date":$1}')), function(key, value) { return value && typeof value.__date == "number" ? new Date(value.__date) : value; }); }; $.ajaxSetup({ converters: { "text json": msDateJsonConverter } });
Essayez ceci. Passez la chaîne de date que vous arrivez à la fonction ci-dessous. Il vous donnera l'objet de date JavaScript.
function (val) { var reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/; var reMsAjax = /^\/Date\((d|-|.*)\)[\/|\\]$/; if (val)) { var a = reISO.exec(val); if (a) { val = new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6])); return val; } a = reMsAjax.exec(val); if (a) { var b = a[1].split(/[-+,.]/); val = new Date(b[0] ? +b[0] : 0 - +b[1]); return val; } } return val; }