Ermittlung der verbleibenden Tagen des laufenden Monats

Eine Sammlung von Home Assistant Templates.
Bitte nur fertige Templates posten, ergänzt um eine Beschreibung und ggf. Screenshots.


Antworten
Benutzeravatar
Osorkon
Administrator
Beiträge: 2016
Registriert: Sa 17. Jul 2021, 16:53
3
Wohnort: Langenargen
Has thanked: 62 times
Been thanked: 554 times
Kontaktdaten:

Ermittlung der verbleibenden Tagen des laufenden Monats

Beitrag 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

Einer muss ja für Ordnung sorgen. :D
Antworten