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