Câu trả lời được chấp nhận không thực sự mô phỏng phương pháp Date.getTimezoneOffset
, thay vào đó, nó hy vọng bạn sử dụng một phương pháp khác có cùng tên.
Nó sẽ không hoạt động trên các đối tượng Ngày tháng và như Carl Meyer chỉ ra, nó sẽ không hoạt động đối với các thư viện như MomentJS.
Cách tốt hơn là ghi đè phương pháp getTimezoneOffset
trên nguyên mẫu Date
để tất cả các phiên bản Date
đều có phương pháp ghi đè.
d = new Date(); // Mon Jul 13 2015 10:58:12 GMT+0200 (CEST)
alert(d.getTimezoneOffset()); // -120, My local "real" timezone.
// Save the original method.
var getTimezoneOffset = Date.prototype.getTimezoneOffset;
Date.prototype.getTimezoneOffset = function() {
return 160;
}
// Now Date objects will have the mocked timezone offset
alert(d.getTimezoneOffset()); // 160, The mocked timezone.
// Now restore the method to its original version
Date.prototype.getTimezoneOffset = getTimezoneOffset;
alert(d.getTimezoneOffset()); // -120
Nguồn
2015-07-13 09:03:13
Thay đổi múi giờ trên máy tính của bạn. Đó là nơi mà trình duyệt nhận được nó. –
Bạn cũng có thể khởi động trình duyệt bằng một TZ khác: http://stackoverflow.com/questions/11453740/fake-time-zone-for-web-app-testing –