如何从JavaScript中的日期对象获取前一周的第一天?

2 javascript

给定一个日期对象,如何获得前一周的第一天

tho*_*ter 6

这个Datejs库看起来可以相对容易地做到这一点.


Bri*_*ndy 5

码:

function getPreviousSunday()
{
    var today=new Date();
    return new Date().setDate(today.getDate()-today.getDay()-7);
}


function getPreviousMonday()
{
    var today=new Date();
    if(today.getDay() != 0)
      return new Date().setDate(today.getDate()-7-6);
    else
      return new Date().setDate(today.getDate()-today.getDay()-6);
}
Run Code Online (Sandbox Code Playgroud)

推理:

取决于前一周的第一天你的意思.为了讨论,我会假设你的意思是前一个星期天.

要查找要减去的天数:

  • 获取当周的当天.
  • 如果当周的当天是星期日,则减去7天
  • 如果当天是星期一,则减去8天

...

  • 如果当天是星期六13天

确定减去天数后的实际代码很简单:

var previous_first_day_of_week=new Date().setDate(today.getDate()-X);
Run Code Online (Sandbox Code Playgroud)

其中X是上面讨论的值.这个值是today.getDay()+ 7

如果在一周的第一天你意味着别的东西,你应该能够从上面的步骤中推断出答案.

注意:将负值传递给setDate函数是有效的,它将正常工作.

对于周一的代码.你有这种特殊情况,因为getDay()在星期一之前订购.因此,在这种情况下,我们基本上用getDay()的星期六值+ 1来替换getDay(),以便将星期日重新订购到本周末.

我们使用6的值作为星期一的减法因为getDay()每天返回1比我们想要的高.