Ich versuche, Wochen aus den angegebenen Start Date und End Date zu extrahieren.

Wenn der Datumsbereich mehr als 31 Tage beträgt, muss ich das Enddatum auf maximal 31 Tage beschränken.

Beispiel:

Start date : 1st May 2018
default end date: 30th June 2018
New endDate should be: 31st May 2018

Unten ist mein Code, um die Wochen zu extrahieren

weekByDates() {
  let dates = JSON.parse(localStorage.getItem('pfsessionFilter'));
let stDate = moment((dates[0].value)).format('YYYY-MM-DD');
let eDate = moment((dates[1].value)).format('YYYY-MM-DD');

let startDate = moment(stDate);
let endDate = moment(eDate);
let weekData = [];
if(endDate.diff(startDate, 'days')>31)
endDate = moment(startDate.add(31, 'days')); 
while(startDate.isSameOrBefore(endDate)) {
    if(weekData.length > 0) {
        // Update end date
        let lastObj = weekData[weekData.length - 1];
        lastObj['endDate'] =  moment(startDate).format('MM/DD');
        lastObj['label'] = `${lastObj.startDate} - ${lastObj['endDate']} (week${weekData.length})`
        startDate.add(1, 'days');
    }
    weekData.push({startDate: moment(startDate).format('MM/DD')});
    startDate.add(6, 'days');
}
if(startDate.isAfter(endDate)) {
    // Update last object
    let lastObj = weekData[weekData.length - 1];
    lastObj['endDate'] =  moment(endDate).format('MM/DD');
    lastObj['label'] = `${lastObj.startDate} - ${lastObj['endDate']} (week${weekData.length})`
}
console.log(weekData)
return weekData;
}

Bitte helfen Sie dabei, das Enddatum auf 31 Tage ab dem Startdatum zu beschränken.

https://plnkr.co/edit/6rU39T0vIPVQkFnydKbC?p=preview

2
Arun K 18 Apr. 2018 im 11:15

3 Antworten

Beste Antwort

Überprüfen Sie, ob der Bereich größer als 31 Tage ist, und verwenden Sie dann die Add-Methode als

weekByDates() 
{ 
  let dates = JSON.parse(localStorage.getItem('getDates')); 
  let stDate = moment((dates[0].value)).format('YYYY-MM-DD'); 
  let eDate = moment((dates[1].value)).format('YYYY-MM-DD'); 
  let startDate = moment(stDate); 
  let endDate = moment(eDate); 
  if(eDate.diff(stDate, 'days')>31)
    endDate = moment(stDate).add(31, 'days'); 
  let weekData = [];      while(startDate.isSameOrBefore(endDate)) 
{ .... }
1
crack_iT 18 Apr. 2018 im 11:38

Sie können die Tage mit der Funktion add () einschränken.

weekByDates() {
  let dates = JSON.parse(localStorage.getItem('getDates'));
  let stDate = moment((dates[0].value)).format('YYYY-MM-DD');
  let eDate = moment((dates[1].value)).format('YYYY-MM-DD');

  let startDate = moment(stDate);
  let endDate = moment(stDate.add(31, 'days'));
  let weekData = [];
  while(startDate.isSameOrBefore(endDate)) {
    ....
}

Hoffe es hilft dir.

-1
Selvarani 18 Apr. 2018 im 08:22

Ich benutze dieses Urteil

if(endDate.diff(startDate, 'days') > 31){
//More than 31 days
}
-1
Mars.Tsai 18 Apr. 2018 im 08:25