Ionic 4 Datum der aktuellen Kalenderwoche

Für Filteraufgaben ist es erforderlich das Datum der aktuellen Kalenderwoche zu wissen, um später selektierte Daten an der Oberfläche anzeigen zu können.

Dazu habe ich drei Methoden programmiert, die mir das aktuelle Datum der Kalenderwoche als String zurückgeben.


 currentCalenderWeek(): string {
    this.firstCalenderWeekDay();
    this.lastCalenderWeekDay();
    return this.firstCalenderWeekDay() + this.lastCalenderWeekDay();
  }

Die Methode firstCalenderWeekDay() liefert mir das Startdatum der Woche, was der Montag ist. Dem­ent­spre­chend lastCalenderWeekDay() das Datum des letzten Tag der Kalenderwoche Sonntag.

 
 firstCalenderWeekDay(): string {

    var date = new Date();
    var currentThursday: Date;

    switch (date.getDay()) {
      // Sunday
      case 0:
        currentThursday = new Date(date.getTime() + ((6 - ((date.getDay() + 6) % 7)) - 6) * 86400000);
        break;
      // Monday
      case 1:
        currentThursday = new Date(date.getTime() + (0 - ((date.getDay() + 6) % 7)) * 86400000);
        break;
      // Tuesday
      case 2:
        currentThursday = new Date(date.getTime() + ((1 - ((date.getDay() + 6) % 7)) - 1) * 86400000);
        break;
      // Wednesday
      case 3:
        currentThursday = new Date(date.getTime() + ((2 - ((date.getDay() + 6) % 7)) - 2) * 86400000);
        break;
      // Thursday
      case 4:
        currentThursday = new Date(date.getTime() + ((3 - ((date.getDay() + 6) % 7)) - 3) * 86400000);
        break;
      // Friday
      case 5:
        currentThursday = new Date(date.getTime() + ((4 - ((date.getDay() + 6) % 7)) - 4) * 86400000);
        break;
      // Saturday
      case 6:
        currentThursday = new Date(date.getTime() + ((5 - ((date.getDay() + 6) % 7)) - 5) * 86400000);
        break;
      default:
        break;
    }

    let day = currentThursday.toLocaleDateString(navigator.language, { day: 'numeric' });
    let year = currentThursday.toLocaleDateString(navigator.language, { year: 'numeric' });
    let month = currentThursday.toLocaleDateString(navigator.language, { month: 'numeric' });

    return day + '.' + month + '.' + year + ' ~ ';
  }

 lastCalenderWeekDay(): string {
    var date = new Date();
    var currentThursday: Date;

    switch (date.getDay()) {
      // Sunday
      case 0:
        currentThursday = new Date(date.getTime() + ((6 - ((date.getDay() + 6) % 7)) + 0) * 86400000);
        break;
      // Monday
      case 1:
        currentThursday = new Date(date.getTime() + (0 - ((date.getDay() + 6) % 6)) + 6 * 86400000);
        break;
      // Tuesday
      case 2:
        currentThursday = new Date(date.getTime() + ((1 - ((date.getDay() + 6) % 7)) + 5) * 86400000);
        break;
      // Wednesday
      case 3:
        currentThursday = new Date(date.getTime() + ((2 - ((date.getDay() + 6) % 7)) + 4) * 86400000);
        break;
      // Thursday
      case 4:
        currentThursday = new Date(date.getTime() + ((3 - ((date.getDay() + 6) % 7)) + 3) * 86400000);
        break;
      // Friday
      case 5:
        currentThursday = new Date(date.getTime() + ((4 - ((date.getDay() + 6) % 7)) + 2) * 86400000);
        break;
      // Saturday
      case 6:
        currentThursday = new Date(date.getTime() + ((5 - ((date.getDay() + 6) % 7)) + 1) * 86400000);
        break;
      default:
        break;
    }

    let day = currentThursday.toLocaleDateString(navigator.language, { day: 'numeric' });
    let year = currentThursday.toLocaleDateString(navigator.language, { year: 'numeric' });
    let month = currentThursday.toLocaleDateString(navigator.language, { month: 'numeric' });

    return day + '.' + month + '.' + year;
  }

Die Ausgabe ist wie folgt: 4.5.2020 ~ 10.5.2020

Die Lösung der Aufgabe ist nach meiner Meinung sehr groß und sollte leichter zu lösen sein. Wer eine bessere Lösung kennt, kann diese gern im Kommentar hinterlassen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.