Bunun biraz geç olduğunu biliyorum, ancak saat diliminden bağımsız olmak istediğinizde tarihleri ele almak için bulmam gereken çözüm burada. Esasen her şeyi UTC'ye dönüştürmeyi içerir.
Javascript'ten Sunucuya :
Tarihleri, saat dilimi farkı kaldırılarak çağ değerleri olarak gönderin.
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) }
});
Sunucu daha sonra tarih epoch olarak 1420070400000 alır.
Sunucu tarafında, bu epoch değerini bir datetime nesnesine dönüştürün:
DateTime d = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(epoch);
Bu noktada tarih, kullanıcının sağladığı şekliyle yalnızca tarih / saattir. Etkili olarak UTC'dir.
Diğer tarafa gitmek :
Sunucu veri tabanından muhtemelen UTC olarak veri çektiğinde, farkı bir dönem olarak alın (her iki tarih nesnesinin de yerel veya UTC olduğundan emin olun):
long ms = (long)utcDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
veya
long ms = (long)localDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local)).TotalMilliseconds;
JavaScript bu değeri aldığında, yeni bir tarih nesnesi oluşturun. Ancak, bu tarih nesnesinin yerel saat olduğu varsayılacaktır, bu nedenle onu geçerli saat dilimine göre kaydırmanız gerekir:
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)
Bildiğim kadarıyla bu, saat diliminden bağımsız tarihleri görüntülemeniz gereken her saat dilimi için çalışmalıdır.