Seite 1 von 1

Ermittlung der verbleibenden Tagen des laufenden Monats

Verfasst: Sa 10. Jun 2023, 11:17
von Osorkon

Hier mal ein Template, welcher die verbleibende Tage des Monats errechnet.

Auch wenn ihr das Template in dieser Form gar nicht gebrauchen könnt, soll euch der Aufbau und die kurzen Erläuterungen das Templating ein wenig näher bringen.

Ansonsten lässt sich daraus ein schöner Countdown basteln.
Hochrechnung von irgendwelchen monatlichen Verbräuchen, oder was auch immer :D

Code: Alles auswählen

{% set this = now().replace(hour=0).replace(minute=0).replace(second=0).replace(microsecond=0) %}
{% set next = this.month + 1 if this.month + 1 <= 12 else 1 %}
{% set last = this.replace(year=this.year + 1, month=1, day=1) if now().month == 12 else this.replace(month=next, day=1) %}
{{ (last.date() - this.date()).days  }}

Die erste Zeile erzeugt die Variable this -> Das heutige Datum

Code: Alles auswählen

{% set this = now().replace(hour=0).replace(minute=0).replace(second=0).replace(microsecond=0) %}

Dieser Variable wird der Zeitstempel "jetzt" zugewiesen, wobei die Stunden, Minuten, Sekunden und Millisekunden auf 0 gesetzt werden.


Die zweite Zeile definiert die Variable next -> Der Folgemonat

Code: Alles auswählen

{% set next = this.month + 1 if this.month + 1 <= 12 else 1 %}

Dabei muss sichergestellt werden, das nach Monat 12 der Monat 1 und nicht Monat 13 folgt.


Die dritte Zeile definiert die Variable last -> Den ersten des Folgemonats

Code: Alles auswählen

{% set last = this.replace(year=this.year + 1, month=1, day=1) if now().month == 12 else this.replace(month=next, day=1) %}

Dabei muss sichergestellt werden, wenn es sich heute um den Monat 12 handelt, dass der Jahreswechsel berücksichtigt wird.


Die letzte Zeile berechnet die Tage zwischen den ersten des Folgemonats (last) und heute (this )

Code: Alles auswählen

{{ (last.date() - this.date()).days  }}

Wenn der heutige Tag nicht mitgezählt werden soll, kann man im Ergebnis einfach einen Tag abziehen.

Code: Alles auswählen

{{ (last.date() - this.date()).days - 1  }}

Gruß
Osorkon