Liebe SmartHome for Dummies Gemeinde.

Die phpBB Forum Software gehört nicht wirklich zu den modernsten seiner Art.
Ich habe mich an einer Migration zu Discourse versucht und bin leider kläglich gescheitert.

Möchte aber trotzdem einen Neuanfang auf einer modernen Plattform starten.
Gerne möchte ich Euch animieren das neue Discourse Forum zu benutzen.
Bestehenden Usern bleibt es leider nicht erspart, sich auf der neuen Platform neu anzumelden.

Das Forum hier, bleibt selbstverständlich Online. Ich würde versuchen einiges händisch zu migrieren.
Da fallen mir die Rubriken "Template Sammlungen" oder "Best Practice Automatisierungen" ein.

SmartHome for Dummies Discourse Platform.

Ermittlung der verbleibenden Tagen des laufenden Monats

Die Unterkategorie Templates Sammlungen ist im Lesemodus.
Hier geht es im neuen Kleid weiter https://community-discourse.smarthome-f ... ammlung/12


Forumsregeln

Hier geht es im neuen Kleid weiter https://community-discourse.smarthome-f ... ammlung/12

Antworten
Benutzeravatar
Osorkon
Administrator
Beiträge: 2105
Registriert: Sa 17. Jul 2021, 16:53
3
Wohnort: Langenargen
Has thanked: 63 times
Been thanked: 580 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