Web サイトでロケーション機能をテストしたいのですが、このテストを行うには、さまざまなタイムゾーンを試す必要があります。次の関数を呼び出して、javascript コードでタイムゾーンを取得します。
var offset = new Date().getTimezoneOffset();
私はアルゼンチンにいるので、この関数は 180 を返します。異なるタイムゾーンでテストする必要があります。誰かがこれを行う方法を知っていますか? どうもありがとう!!
Web サイトでロケーション機能をテストしたいのですが、このテストを行うには、さまざまなタイムゾーンを試す必要があります。次の関数を呼び出して、javascript コードでタイムゾーンを取得します。
var offset = new Date().getTimezoneOffset();
私はアルゼンチンにいるので、この関数は 180 を返します。異なるタイムゾーンでテストする必要があります。誰かがこれを行う方法を知っていますか? どうもありがとう!!
受け入れられた答えは、メソッドを実際にモックするDate.getTimezoneOffset
ものではなく、同じ名前の別のメソッドを使用することを期待しています。
Date オブジェクト自体では機能せず、Carl Meyer が指摘するように、MomentJS などのライブラリでは機能しません。
より良い方法は、プロトタイプのgetTimezoneOffset
メソッドをオーバーライドして、 のすべてのインスタンスがオーバーライドされたメソッドを持つようにすることです。Date
Date
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
これには関数を使用できます。
function getTimezoneOffset() {
if (DEBUG) {
return 600; // for Australian Eastern Standard Time
}
return new Date().getTimezoneOffset();
}
DEBUG
テストを行っているかどうかを判断するために以前に設定された変数はどこにありますか。
次に、Date オブジェクトのメソッドではなく、コード全体でその関数を使用します。