The accepted answer doesn't really mock the Date.getTimezoneOffset
method, instead it expects you to use a different method with the same name.
It won't work on Date objects themselves and as Carl Meyer points out, it won't work for libraries like MomentJS.
A better way is to override the getTimezoneOffset
method on the Date
prototype, so that all instances of Date
have the overridden method.
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