A to nie możesz sprawdzić działania "last" i "next" oraz zrobić prostych if? Bo do tego całe to kombinowanie sie sprawdzi.
Jeśli dziś jest poniedziałek to startowy poniedziałek jest dziś, jeśli nie to jest to ostatni poniedziałek.
Jeśli dziś jest niedziela to niedziela jest dziś, jeśli nie, jest to przyszła niedziela.
Te dwa warunki wyznaczą Ci "zakres tygodniowy". Kapiszi?

Masz start i koniec tygodnia, a reszta jest bez znaczenia i możesz ją nawet na ślepo generować, bo masz początek i koniec zakresu datowego.