26

日曜日から始まる現在の週をカレンダー ビューで表示する必要があります。

Javascriptで「先週の日曜日」を判断する最も安全な方法は何ですか?

次のコードを使用して計算していました。

Date.prototype.addDays = function(n) {
      return new Date(this.getTime() + (24*60*60*1000)*n);
}

var today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var lastSunday = today.addDays(0-today.getDay());

このコードは、毎日が 24 時間で構成されていると想定しています。これは正しいですが、夏時間のクロスオーバー日である場合を除きます。この場合、1 日は 23 時間または 25 時間になる可能性があります。

今週、オーストラリアのシドニーでは、時計を 1 時間進めました。その結果、私のコードlastSundayは土曜日の 23:00 として計算されます。

では、先週の日曜日を決定する最も安全で効率的な方法は何ですか?

4

3 に答える 3

30

安全に 1 日を追加するには、次を使用します。

d.setDate(d.getDate() + 1);

これは夏時間に安全です。日付オブジェクトを最後の日曜日に設定するには:

function setToLastSunday(d) {
  return d.setDate(d.getDate() - d.getDay());
}

または、先週の日曜日の新しい Date オブジェクトを返すには:

function getLastSunday(d) {
  var t = new Date(d);
  t.setDate(t.getDate() - t.getDay());
  return t;
}

編集

元の回答には間違ったバージョンの追加時間がありました。これは1日追加されますが、OPが望む方法ではありません。

于 2012-10-09T00:47:06.437 に答える
9

このjsfiddleを試してください

組み込みの日付メソッドのみを使用します

var now = new Date();
var today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
var lastSunday = new Date(today.setDate(today.getDate()-today.getDay()));
于 2012-10-09T01:08:08.683 に答える