Formatieren / Umrechnen - Dezimalwert zu Zeitformat dd:hh:mm:ss
Wie erfolgt eigentlich die Umrechnung/Formatierung von einem Dezimalwert in Minuten oder Sekunden zu einem Zeitformat dd:hh:mm:ss
Also die Ausgabe von Tagen, Stunden, Minuten, Sekunden.
Anbei ein Bsp. für die Umrechnung von einem dezimalwert in Minuten.
Im Bsp. Template kommt der Dezimalwert von dem sensor.laufzeit_minuten.
Code: Alles auswählen
# Dezimalwert in Minuten
{% set m = states('sensor.laufzeit_minuten') | int(0) %}
{{ '%02d:%02d:%02d' % ((m/1440)|int, (m%360)/60 | int, (m%60)) }}
Das Ergebnis ist die Zeitangabe im Format dd:hh:mm
3226 min ergibt 02:05:46
Dabei erfolgt die Ausgabe immer im Format dd:hh:mm
Bsp. 00:00:59
Eine andere Möglichkeit wäre nur die Ausgabe der Zeit im Format
x Tage, x Stunden, x Minuten
Wobei die Formatierung nur eins von vielen Möglichkeiten darstellt.
Dabei werden Tage, Stunden, Minuten nur aufgeführt, wenn Wert > 0
Code: Alles auswählen
# Dezimalwert in Minuten
{% set m = states('sensor.laufzeit_minuten') | int(0) %}
{% set minuten = m % 60 %}
{% set stunden = ((m % 360) / 60) | int %}
{% set tage = (m / 1440) | int %}
{% if tage > 0 %}
{%- if tage == 1 -%}
1 Tag
{%- else -%}
{{ tage }} Tage
{%- endif -%}
{{ ', ' }}
{%- endif -%}
{%- if stunden > 0 -%}
{%- if stunden == 1 -%}
1 Stunde
{%- else -%}
{{ stunden }} Stunden
{%- endif -%}
{{ ', ' }}
{%- endif -%}
{%- if minuten > 0 -%}
{%- if minuten == 1 -%}
1 Minute
{%- else -%}
{{ minuten }} Minuten
{%- endif -%}
{%- endif -%}
Der dezimalwert 1444 min ergibt dann:
1 Tag, 4 Minuten
Sollen ebenfalls Sekunden berücksichtigt werden, sprich der Dezimalwert wird in Sekunden angegeben, sehen die Templates dan so aus:
Code: Alles auswählen
# Dezimalwert in Sekunden
{% set s = states('sensor.laufzeit_sekunden') | int(0) %}
sek: {{ '%02d:%02d:%02d:%02d' % ((s/86400)|int, (s%86400)/3600 | int, (s%60)/60 | int, (s%60)) }}
Code: Alles auswählen
# Dezimalwert in Sekunden
{% set s = states('sensor.laufzeit_sekunden') | int(0) %}
{% set sekunden = s % 60 %}
{% set minuten = ((s % 3600) / 60) | int %}
{% set stunden = ((s % 86400) / 3600) | int %}
{% set tage = (s / 86400) | int %}
{%- if tage > 0 -%}
{%- if tage == 1 -%}
1 Tag
{%- else -%}
{{ tage }} Tage
{%- endif -%}
{{ ', ' }}
{%- endif -%}
{%- if stunden > 0 -%}
{%- if stunden == 1 -%}
1 Stunde
{%- else -%}
{{ stunden }} Stunden
{%- endif -%}
{{ ', ' }}
{%- endif -%}
{%- if minuten > 0 -%}
{%- if minuten == 1 -%}
1 Minute
{%- else -%}
{{ minuten }} Minuten
{%- endif -%}
{%- endif -%}
{{ ', ' }}
{%- if sekunden > 0 -%}
{%- if sekunden == 1 -%}
1 Sekunde
{%- else -%}
{{ sekunden }} Sekunden
{%- endif -%}
{%- endif -%}
Gruß
Osorkon