ユーザーが日付を入力できるフォームがあります。つまり<input type="date">
、値はyyyy-MM-dd
形式で送信されます。文字列を使用してDateオブジェクトを作成すると、タイムゾーンがユーザーのブラウザに設定されているものであると想定されます。これが私が望む動作です。
次に、日付値を使用して、ISO 日付/時刻文字列を想定する REST API に対してクエリを作成しています。DatetoISOString
オブジェクトの関数がすべてを正しく処理するため、これは問題ありません。
ただし、このコードを単体テストしている場合、入力をyyyy-MM-dd
文字列に設定し、出力が予想される ISO タイムスタンプ文字列であることをアサートすると、テストは特定のタイム ゾーンでのみ機能します。テストでタイムゾーンを強制する方法はありますか?
Jasmine スパイを使用して次のようなことを試みました。
var fixedTime = moment().zone(60).toDate()
spyOn(window, 'Date').andCallFake(function() {
return fixedTime;
});
しかし、コンストラクターには非常に多くのバリエーションがあり、moment.js によって呼び出される方法が非常に多いことを考えると、これはかなり非現実的であり、無限ループに陥っています。