So che è un po 'tardi, ma ecco la soluzione che dovevo trovare per gestire le date quando si desidera essere indipendente dal fuso orario. In sostanza si tratta di convertire tutto in UTC.
Da Javascript per server:
inviare date come valori d'epoca con l'offset rimosso fuso orario.
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) }
});
Il server riceve 1420,0704 miliardi come data epoca.
Sul lato server, convertire tale valore epoch a un oggetto datetime:
DateTime d = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(epoch);
A questo punto la data è solo la data/ora fornita dall'utente in quanto le fornivano. In effetti è UTC.
In senso contrario:
Quando il server estrae i dati dal database, presumibilmente in UTC, ottenere la differenza come un'epoca (facendo in modo che entrambi gli oggetti di data sono o locale 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;
Quando javascript riceve questo valore, crea un nuovo oggetto data. Tuttavia, questo oggetto data sta per essere assunto ora locale, quindi è necessario per compensare dal fuso orario corrente:
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)
Per quanto ne so, questo dovrebbe funzionare per qualsiasi fuso orario in cui si è necessario visualizzare le date che sono indipendenti dal fuso orario.
In domande di questo tipo che sono, ovviamente ajax correlati, è necessario specificare dove si sta facendo la conversione, e considerando che non esiste uno standard per la data serializzazione in JSON e che è possibile che si si occupano di MS Data munging ad es/Data (02020202)/assicuratevi di rendere chiaro anche questo. buona fortuna –
Dovresti collegare la risposta a cui ti stai riferendo – cdmckay