Sé que esto es un poco tarde, pero esta es la solución que tuve que idear para manejar las fechas cuando usted desea ser zona horaria independiente. Esencialmente implica convertir todo a UTC.
De Javascript para Servidor:
Enviar cabo fechas como valores de época con la zona horaria de desplazamiento eliminado.
var d = new Date(2015,0,1) // Jan 1, 2015
// Ajax Request to server ...
$.ajax({
url: '/target',
params: { date: d.getTime() - (d.getTimezoneOffset() * 60 * 1000) }
});
continuación, el servidor recieves 1420070400000 como la época fecha.
En el lado del servidor, convertir ese valor de la época a un objeto de fecha y hora:
DateTime d = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(epoch);
En este punto, la fecha es la fecha/hora proporcionada por el usuario, ya que siempre la misma. Efectivamente es UTC.
En sentido:
Cuando el servidor extrae datos de la base de datos, presumiblemente en UTC, obtener la diferencia como una época (asegurándose de que ambos objetos de la fecha son ya sea local o UTC):
long ms = (long)utcDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
o
long ms = (long)localDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local)).TotalMilliseconds;
Cuando javascript recibe este valor, cree un nuevo objeto de fecha. Sin embargo, este objeto fecha va a ser asumida hora local, por lo que necesita para compensar por la zona horaria actual:
var epochValue = 1420070400000 // value pulled from server.
var utcDateVal = new Date(epochValue);
var actualDate = new Date(utcDateVal.getTime() + (utcDateVal.getTimezoneOffset() * 60 * 1000))
console.log(utcDateVal); // Wed Dec 31 2014 19:00:00 GMT-0500 (Eastern Standard Time)
console.log(actualDate); // Thu Jan 01 2015 00:00:00 GMT-0500 (Eastern Standard Time)
Por lo que yo sé, esto debería funcionar para cualquier zona horaria donde se necesita mostrar las fechas que son independientes de la zona horaria.
En este tipo de preguntas que son, obviamente, ajax relacionados, se debe especificar el lugar en que está haciendo la conversión, y teniendo en cuenta que no existe un estándar para la fecha de la serialización en JSON y que es posible que se están tratando con MS Date munging, por ejemplo,/Date (02020202)/asegúrese de dejar eso en claro también. buena suerte –
Debe vincular la respuesta que se refiere a – cdmckay