2011-06-24 25 views
5

He el siguiente problema:convertir .NET DateTime objeto a objeto Javascript Fecha

puedo recuperar un objeto DateTime de SQL Server y pasarlo a través de JSON (usando $ .ajax) de Javascript. He tenido dificultades para tratar de convertir el objeto recuperado a un objeto Date en javascript. El objeto recuperado es una cadena de valor "/ Fecha (615592800000) /". Creo que el valor es un tiempo de época.

Mi pregunta es, ¿hay alguna otra manera de recuperar el objeto de fecha que usar regex para seleccionar el valor de epoch y luego crear un nuevo objeto Date?

Soy bastante nuevo en JS, por lo que cualquier ayuda sería apreciada.

Respuesta

6

no que yo sepa ... Esta es la función que estoy usando, por si acaso ...

function toDateFromJson(src) { 
    return new Date(parseInt(src.substr(6))); 
} 
+0

Thx. No es exactamente lo que estaba buscando, pero esto es bastante simple y utilizable. –

0

Esto se debe a JSON de serie no tiene un formato DateTime - vendedores son libres de marcarlo como lo deseen. WCF tiene este extraño formato de/Date()/ Me enfrenté a esto hace solo un par de meses. Usando Jquery y Jquery UI se verá así. controlId es el identificador de un elemento con

var converted = eval(original.replace(/\/Date\((\d+)\)\//gi, 'new Date($1)')); 
0

La forma regex es la forma correcta de proceder.

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

Ver: http://weblogs.asp.net/bleroy/archive/2008/01/18/dates-and-json.aspx

0

probar esto. Pase la cadena de fecha que obtiene a la función siguiente. Le dará el objeto de fecha de 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; 
    } 
+0

Este código no es válido (errores de sintaxis) – meffect

Cuestiones relacionadas