如何使用打字稿获取下一次出现的星期一(日期)?

时间:2018-11-28 03:44:15

标签: javascript angular typescript date datetime

我正尝试使用打字稿来获取下一个13个星期一的日期。

我尝试使用下面的代码,但是仅获取下周一的日期。我需要同时将剩余的星期一(日期)也添加到数组中。

我正在使用角度4和打字稿。

请提出任何有关此问题的想法。

下面是我的代码

  var mondayDate = this.dateFrom;
  var dateFrom = mondayDate.setDate(mondayDate.getDate() + (7 - mondayDate.getDay()) % 7 + 1);
  var firstMonday = new Date(dateFrom);
  -----------
  -----------

非常感谢。

3 个答案:

答案 0 :(得分:0)

这应该为您解决问题。

moment.js也是一个不错的选择

//d can be any date
var d = new Date();
d.setDate(d.getDate() +1);
 

function getNextMonday(anyDate){
  var dayOfWeek= anyDate.getDay();
  var aux=dayOfWeek?1:-6; //if it is sunday or not
  var nextMonday= new Date();
  nextMonday.setDate(anyDate.getDate() - dayOfWeek + aux +7)
  return nextMonday;
}


console.log(getNextMonday(d));

答案 1 :(得分:0)

在此解决方案中,最终结果将为dd/mm/yyyy格式。

var fromDate = new Date(2018, 10, 28); //28/11/2018
var toDate = new Date(2018, 11, 28); //28/12/2018

var tempDate = fromDate;
var noOfDays = Math.round((toDate-fromDate)/(1000*60*60*24));
var noOfWeek = noOfDays/7;
var mondays = [];
for(var i =0; i < noOfWeek; i++){
  tempDate.setDate(tempDate.getDate() + (7 - tempDate.getDay()) % 7 + 1);
  if(tempDate < toDate){
    mondays.push(tempDate.getDate()+"/"+(tempDate.getMonth()+1)+"/"+tempDate.getFullYear());
  }
}
          
console.log(mondays);

答案 2 :(得分:0)

一个简单的TypeScript解决方案

this.today = new Date();
this.nextMonday = new Date();
this.nextSunday = new Date();

// Use 1 for Monday
this.nextMonday.setDate((this.today.getDate() + (1 + 7 - this.today.getDay()) % 7));
// Use 7 for Sunday
this.nexySunday.setDate(this.today.getDate() + (7 + 7 - this.today.getDay()) % 7);

您会看到第一个数字是您想要的日期(1:星期一,2:星期二,... 7:星期日)。