获取最近发生的星期天

时间:2012-10-09 00:41:19

标签: javascript date datetime

我需要在日历视图中显示当前周,从星期日开始。

在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());

此代码假设每天包含二十四小时。这是正确的,除非是夏令时交叉日,在这种情况下,这一天可能是二十三或二十五小时。

本周,在澳大利亚悉尼,我们将时钟向前推进了一个小时。因此,我的代码在周六23:00计算lastSunday

那么上周日确定最安全,最有效的方法是什么?

2 个答案:

答案 0 :(得分:18)

要安全地添加一天,请使用:

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;
}

修改

原始答案的版本添加时间不正确,确实会增加一天,但不会增加OP的需求。

答案 1 :(得分:4)

试试这个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()));