Tôi biết điều này hơi trễ một chút, nhưng đây là giải pháp tôi phải đưa ra để xử lý ngày khi bạn muốn là múi giờ độc lập. Về cơ bản nó liên quan đến việc chuyển đổi mọi thứ sang UTC.
Từ Javascript để máy chủ:
Gửi ra ngày như các giá trị thời đại với múi giờ bù đắp gỡ bỏ.
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) }
});
Máy chủ sau đó recieves 1420070400000 như thời đại ngày.
Về phía Server, chuyển đổi giá trị thời đại đến một đối tượng datetime:
DateTime d = new DateTime(1970, 1, 1, 0, 0, 0).AddMilliseconds(epoch);
Tại thời điểm này ngày chỉ là ngày/giờ được cung cấp bởi người dùng như họ đã cung cấp nó. Hiệu quả là UTC.
Đi theo cách khác:
Khi máy chủ kéo dữ liệu từ cơ sở dữ liệu, có lẽ trong UTC, có sự khác biệt như một kỷ nguyên (đảm bảo rằng cả hai đối tượng ngày là một trong hai địa phương hoặc UTC):
long ms = (long)utcDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
hoặc
long ms = (long)localDate.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local)).TotalMilliseconds;
Khi javascript nhận giá trị này, hãy tạo đối tượng ngày mới. Tuy nhiên, đối tượng ngày này sẽ được giả định theo giờ địa phương, vì vậy bạn cần phải bù đắp nó bằng múi giờ hiện tại:
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)
Theo như tôi biết, điều này sẽ làm việc cho bất kỳ múi giờ nơi bạn cần hiển thị các ngày có múi giờ độc lập.
Trong câu hỏi như thế này mà rõ ràng là ajax liên quan, bạn nên xác định nơi bạn đang làm việc chuyển đổi, và xem xét rằng không có tiêu chuẩn cho ngày serialization trong JSON và đó có thể là bạn đang đối phó với MS Date munging ví dụ/Date (02020202)/chắc chắn để làm cho rõ ràng là tốt. Chúc may mắn –
Bạn nên liên kết câu trả lời bạn đang đề cập đến – cdmckay