计算上周日Javascript

计算上周日Javascript,javascript,date,Javascript,Date,我试图通过.setdate.getdate-7天的方法来计算上一个星期天的日期,但它似乎可以完美地计算上周的yesturday,但不能计算星期天。有什么想法吗 var today=新日期(); var昨天=新日期(); var lwdayed=新日期(); var lwsday=新日期(); //设定昨天的日期 昨天.setDate(今天.getDate()-1); console.log('昨天='+昨天); //星期天计算并设置 var Sunday=新日期(today.getTime()

我试图通过.setdate.getdate-7天的方法来计算上一个星期天的日期,但它似乎可以完美地计算上周的yesturday,但不能计算星期天。有什么想法吗

var today=新日期();
var昨天=新日期();
var lwdayed=新日期();
var lwsday=新日期();
//设定昨天的日期
昨天.setDate(今天.getDate()-1);
console.log('昨天='+昨天);
//星期天计算并设置
var Sunday=新日期(today.getTime()-today.getDay()*24*3600*1000);
console.log('最近的星期日='+星期日);
//上周是昨天
lweather.setDate(昨日.getDate()-7);
console.log('上周昨天='+昨天);
//上周定在星期天
lwsday.setDate(Sunday.getDate()-7);
log('last week sunday='+LWSunday);
//返回2017年5月23日星期二14:08:24 GMT+0100(GMT夏季时间)

//应该是星期二>**2017年4月23日14:08:24 GMT+0100(GMT夏季时间)
我刚刚注意到你真正的问题: 周日可能是最后一个月了。 因此,Sunday.getDate()-7为正值,不会更改LWSdanday Month属性

因此,您还需要更改月份(在某些情况下):

或者你选择了整个约会:

var LWSunday = new Date(Sunday.getTime() - 7*24*3600*1000);

我刚刚注意到你真正的问题: 周日可能是最后一个月了。 因此,Sunday.getDate()-7为正值,不会更改LWSdanday Month属性

因此,您还需要更改月份(在某些情况下):

或者你选择了整个约会:

var LWSunday = new Date(Sunday.getTime() - 7*24*3600*1000);

SetDate()
查找时间值输入的月份。但是你试图通过外观来找到整个日期值。如果我明白你想做什么,你真正想要的是:

    LWSunday.setTime(Sunday.getTime() - 7*24*60*60*1000);
SetDate()
查找时间值输入的月份。但是你试图通过外观来找到整个日期值。如果我明白你想做什么,你真正想要的是:

    LWSunday.setTime(Sunday.getTime() - 7*24*60*60*1000);
我们使用
daysBack
变量,这样无论今天是星期几,我们都可以得到上一个星期天。由于
getDay()
返回0表示星期天,1表示星期一等,我们使用的公式如上所述。例如,如果今天是星期六,
getDay()
给我们6,我们这里有-7+(7-6),然后是-7+1,我们得到-6,这意味着最近的星期天是6天前

daysBack | |-7
用于获取前一个星期日,如果今天也是星期日

我们使用
daysBack
变量,这样无论今天是星期几,我们都可以得到上一个星期天。由于
getDay()
返回0表示星期天,1表示星期一等,我们使用的公式如上所述。例如,如果今天是星期六,
getDay()
给我们6,我们这里有-7+(7-6),然后是-7+1,我们得到-6,这意味着最近的星期天是6天前


daysBack | |-7
用于获取前一个星期日,如果今天也是星期日

您不必设置月份,因为
setDate
功能会自动处理:

Date.setDate(day)
-
day
表示一个月中某一天的整数

预期值为1-31,但允许使用其他值:

  • 0将导致上个月的最后一天
  • -1将导致上个月最后一天的前一天
如果该月有31天:

  • 32将在下个月的第一天完成
如果该月有30天:

  • 32将在下个月的第二天完成
您需要的是:

  • getDay()
    返回一周中的某一天(其中周日为0,周一为1,…周六为6)

    • 你必须把它转换成Monay是1。。。星期六是6,星期天是7
    • 您可以通过
      today.getDay()| | 7
      进行转换(从Damian那里借用)
    • 否则,当今天是星期日时,代码将把这个星期日作为上周的星期日
  • 您必须将每月的日期(
    getDate()
    )减少为每周的日期(
    getDay()| 7

所以在您的例子中使用:
lwsday.setDate(today.getDate()-(today.getDay()| 7))

类似地,如果要获取当前一周的星期日,则必须添加7天:
Sunday.setDate(today.getDate()-(today.getDay()| 7)+7)

var today=新日期();
var Sunday=新日期();
var lwsday=新日期();
//星期天计算并设置
Sunday.setDate(今天.getDate()-(今天.getDay()| 7)+7);
console.log('最近的星期日='+星期日);
//上周定在星期天
lwsday.setDate(today.getDate()-(today.getDay()| 7));

log('last week sunday='+LWSunday)您不必设置月份,因为
setDate
功能会自动处理:

Date.setDate(day)
-
day
表示一个月中某一天的整数

预期值为1-31,但允许使用其他值:

  • 0将导致上个月的最后一天
  • -1将导致上个月最后一天的前一天
如果该月有31天:

  • 32将在下个月的第一天完成
如果该月有30天:

  • 32将在下个月的第二天完成
您需要的是:

  • getDay()
    返回一周中的某一天(其中周日为0,周一为1,…周六为6)

    • 你必须把它转换成Monay是1。。。星期六是6,星期天是7
    • 您可以通过
      today.getDay()| | 7
      进行转换(从Damian那里借用)
    • 否则,当今天是星期日时,代码将把这个星期日作为上周的星期日
  • 你必须减少时间