31 votos

Cómo pasar un JSON fecha de valor a través de las ASP.NET MVC usando JSON.Net?

Posibles Duplicados:
Cómo dar formato a un JSON fecha?

ASP.NET Json() formatos y devuelve una fecha como

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

que tiene que ser tratada w/ en el lado del cliente que es problemático. ¿Cuáles son sus sugerencias para enfoques para el envío de los valores de fecha de ida y vuelta?

Gracias

27voto

Jimbo Puntos 5133

Esto se encuentra en otro post en stackoverflow:

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

La función substr se lleva a cabo la "\/Date(" parte, y la función parseInt obtiene el entero y omite el ")\/" al final. El número resultante se pasa en el constructor de Fecha

10voto

Ryan Taylor Puntos 3091

Si usted no está atado a la MS JSON serializador usted podría utilizar Json.NET. Viene con un IsoDateTimeConverter para manejar los problemas con serializar fechas. Esto va a serializar fechas en una ISO 8601 cadena con formato.

Por ejemplo, en nuestro proyecto serializar myObject se gestiona a través del siguiente código.

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

Si usted decide tomar el Json.NET sumergirse usted también querrá agarrar JsonNetResult como se devuelve un ActionResult que puede ser utilizado en ASP.NET aplicación MVC. Es muy fácil de usar.

Para más información ver: Buena (Fecha)Veces con Json.NET

6voto

Steve Shipway Puntos 318

Puede ser feo, pero funciona:

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

Probablemente, no es necesario para que coincida con el conjunto de la cadena, y sólo (-?[0-9]+) es suficiente...

5voto

Dave Ward Puntos 36006

No todo el mundo está de acuerdo conmigo en que es una buena idea, pero me encuentro más a menudo volvía formato de cadenas en lugar de la correcta fechas: http://encosia.com/2009/04/27/how-i-handle-json-dates-returned-by-aspnet-ajax/

1voto

brow-cow Puntos 21

Después de jugar con el JsonNet de la biblioteca, me pregunto por qué elegir a utilizar el IsoDateTimeConverter sobre el JavascriptDateTimeConverter.

He encontrado esto para ser más fácil de usar con la ExtJS interfaces que estaba utilizando en el momento de registrar las fechas desde un Controlador MVC.

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

Me estoy poniendo estos datos en un Ext.de datos.JsonStore que es capaz de obtener el valor devuelto como una fecha sin yo tener que especificar un formato de fecha a analizar.

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

El Json devuelto se parece a esto:

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

Cualquier razón para convertir a formato ISO 8601) y la de regreso si usted no tiene que?

Gracias,

CBrown

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: