Por la tarde, encontramos un problema al convertir los formatos de fecha de MVC y ExtJS. El resultado de serialización de un objeto DateTime desde el lado del servidor .NET es un formato de cadena, como '/date (1335258540000)/' .
El Integer 1335258540000 es en realidad un intervalo de milisegundos entre el 1 de enero de 1970 y esta hora de fecha. A través de JavaScript, use la función eval para convertir esta cadena de fecha en un objeto de fecha con una zona horaria, de la siguiente manera
Use var fecha = eval ('nuevo' + eval ('/fecha (1335258540000)/'). Fuente) para obtener un objeto JS
Compruébalo claramente a través de la alerta (fecha).
Martes 24 de abril 17:09:00 UTC+0800 2012
La arriba es una cadena obtenida automáticamente siendo serializando la fecha de C# JSON. También puede escribir una función para obtener este número a través de C#, por ejemplo
public Long Millitimestamp (DateTime Thedate) {DateTime D1 = New DateTime (1970, 1, 1); DateTime d2 = thedate.touniversaltime (); Timespan TS = New Timespan (D2.Ticks - D1.Ticks); return (largo) ts.totalmilliseconds; }La función anterior es la misma que el entero en la cadena obtenida usando la serialización JSON.
Sin embargo, al regresar al lado del servidor del cliente, hay un problema con la fecha. ¿Cómo pasar el objeto de fecha de JavaScript de regreso al lado del servidor?
Primero, obtenga este número entero a través de getTime () en la fecha de JavaScript, y luego analice el número entero en el servidor y 'construya' en un objeto C# DateTime. La idea probablemente sea así, pero encontré algunos problemas cuando volví en la dirección opuesta.
Public DateTime ConvertTime (Long MillionTime) {Long Timetricks = New DateTime (1970, 1, 1) .Chicks + MillionTime * 10000; devolver nuevo DateTime (Timetricks); }Los resultados obtenidos a través de Converttime descubrieron que el tiempo era 8 horas menos, lo que resultó ser la zona horaria del servidor, el tiempo de la Octava Zona de East, lo que significa que se deben agregar 8 horas de nanosegundos, porque la unidad de sello de tiempo de C# es una diez millones de segundo, una hora es 3600 segundos, es decir, 8*3600*100000000000000
Entonces, la función ConvertTime se modificó, la correcta es la siguiente:
Public DateTime ConvertTime (Long MillionTime) {Long Timetricks = New DateTime (1970, 1, 1) .Chicks + MillionTime * 10000 + TimeZone.CurrentTimezone.getutCoffset (DateTime.Now). Hours * 3600 * (Long) 100000000; devolver nuevo DateTime (Timetricks); }El ejemplo simple anterior de la conversión de los formatos de tiempo y fecha de JS y C# es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.