7

現在の時刻を別の時刻に設定しようとしていますが、現在の時刻にアクセスしようとするたびに、新しい時刻を取得する必要があります。現在の時刻がローカル マシンの午前 2 時であるとします。しかし、私はそれを午前10時に変更したいのですが、現在の時刻は、アクセスするたびに午前2時ではなく午前10時から刻み続ける必要があります。

元:

var x = new Date();

x.getHours() が私の現地時間を午前 2 時に取得し、常に午前 2 時を基準として時を刻み続けていることがわかります。

しかし、新しい Date() が午前 10 時になり、それに基づいて毎秒刻み続けるように、それを午前 10 時に変更する必要があります。

この目的で setInterval() を使用したくありません。私は確かにsetInterval()で解決策を持っています。しかし、問題は、私には複数の setIntervals があり、もう 1 つは、毎秒午前 10 時を更新しようとしている setInterval() で時刻の更新を停止していることです。

4

5 に答える 5

7

ブラウザから実行している場合ではなく、Javascript からシステム時刻を変更することはできません。それを行うには、javascript とオペレーティング システムの API をインターフェイスする機能を備えた特別な環境が必要です。これは単純なことではなく、おそらくあなたが取り組んでいるアプリケーションの範囲外です。

オフセットを使用して現在の日付を取得する手段を備えた関数/オブジェクトを作成することをお勧めします。このような:

Foo = function () {};
Foo.prototype.offset = 8;
Foo.prototype.getDate = function () {
    var date = new Date();
    date.setHours(date.getHours() + this.offset);
    return date;
}

これで、 をインスタンス化しfoo、オフセット (デフォルトでは 8) を設定して、それを操作できます。オフセット時間が必要な場合は、次のようにします。

var foo = new Foo();
var bar = foo.getDate();

barは刻みませんが、現在の日付にオフセットが必要な場合はいつでもFoo'sgetDateを再度使用できます。

編集:固定の日付から開始するには、次のようにコンストラクターを使用できます。

Foo = function (baseDate) {
    this._date = baseDate;
    this._fetched = new Date();
}

Foo.prototype.getDate = function () {
    var now = new Date();
    var offset = now.getTime() - this._fetched.getTime();
    this._date.setTime(this._date.getTime() + offset);
    this._fetched = now;
    return this._date;
}

now.getDay()月の日ではなく、曜日を返すことに注意してください。したがって、now.getDate()そこまでです。(固定のハードコードされたものの代わりに基準日を使用するように編集されました)。

于 2013-08-07T16:29:59.717 に答える
-2

あなたが試すことができます:

長い道のり:

var date = new Date();
var now = date.getTime();
now.setTime( 0,0,0,0 );
now.setMonth(4);
now.setDate(5);
now.setYear(2013);

短い方法:

var date = new Date("Sat Apr 05 2013 19:30:13 GMT+0200 (IDT)");
于 2013-08-07T16:30:50.557 に答える
-2

単純:

var x = new Date("Fri Aug 09 2013 19:30:13 GMT+0300 (IDT)");

現在、x の日付は 2 日前です (2013 年 9 月 8 日)

于 2013-08-07T16:31:36.283 に答える