h3ad
July 22, 2020, 11:46pm
16
petro:
So, Mo, …, Sa (de_DE)
How can I change the Sun, Mon, …, Sat to German spelling?
Do I need to add “(de_DE)” somewhere in the code next to “%a”?
value_template: >
{{ as_timestamp(now()) | timestamp_custom('%a %d.%m') }}
Or do I need to add “(de_DE)” in generall settings?
petro
(Petro)
July 23, 2020, 12:21am
17
You can’t change the ‘under the hood language’. You’ll have to create a map that links the english to German.
h3ad
July 23, 2020, 7:19am
18
And how can I create a translation map?
I tried with
{% set days = ["Mo ", "Di ", "Mi ", "Do ", "Fr ", "Sa ", "So "] %}
Full Code:
- platform: template
sensors:
date2:
friendly_name: "Datum"
entity_id: sensor.time
value_template: >
{{ as_timestamp(now()) | timestamp_custom('%a %d.%m') }}
{% set days = ["Mo ", "Di ", "Mi ", "Do ", "Fr ", "Sa ", "So "] %}
icon_template: mdi:calendar-range
Or do you mean to use the replace function? Like for example:
replace("Thu", "Do")
h3ad
July 23, 2020, 7:33pm
20
The config check says: data_template is an invalid option for sensor.template
Do I need to create a service dir this? If so, what service?
- platform: template
sensors:
date2:
friendly_name: "Datum"
entity_id: sensor.time
value_template: >
{{ as_timestamp(now()) | timestamp_custom('%a %d.%m') }}
data_template:
entity_id: sensor.time
message: >
{% set days = ["Mo ", "Di ", "Mi ", "Do ", "Fr ", "Sa ", "So "] %}
icon_template: mdi:calendar-range
Moonbase59
(Matthias C. Hormann)
July 31, 2020, 4:25pm
21
You don’t need a data template, just the value template. Since now()
has a weekday()
method, you can use that to directly map into a list of abbreviated localized weekday names:
# Abbr. localized date: Fr 31.07.
- platform: template
sensors:
date2:
friendly_name: "Datum"
entity_id: sensor.time
value_template: >
{% set days = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'] %}
{{ now().timestamp() | timestamp_custom(days[now().weekday()] ~ ' %d.%m.') }}
icon_template: mdi:calendar-range
We simply prepend the mapped localized day name to the custom timestamp here.
The weekday()
method of a Python date
or datetime
object returns the day of the week as an integer, where Monday is 0 and Sunday is 6. Thus, it can be easily used as a list index for the days
list (lists start with index 0).
Here’s a little challenge: Try to rewrite the above so it returns the abbreviated German weekdays plus a German month name, like Fr 31. Juli .
Hints:
Set up a list called months
with the German month names.
now()
also has an instance attribute called month
→ now().month
. It returns the month numbers 1–12.
Remember, list indexes start at zero.
The ~
operator in Jinja (the templating engine) concatenates strings, converting values to type string on the fly.
Have fun!
Edit: Strictly speaking, it is not necessary to update a date info every minute , as we do by specifying sensor.time
as entity ID to watch.
So if you have sensor.date
defined, use that instead. It will update only once per day, at midnight. This will save another few of the precious CPU cycles …
2 Likes
Hey so i tried it and got this:
date2:
friendly_name: "Datum mit Monat"
value_template: >
{% set months = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'] %}
{{ now().strftime (' %d'), now().timestamp() | timestamp_custom(months[now().month] ~ ' %Y') }}
The problem is it gives me the wrong Month (1 Month ahead) and there are also brackets.
(‘22’,‘Dezember 2020’)
Do you know any Solutions?
I’m new to HomeAssistant and have no idea how to solve it.
Kind regards
Hannes
petro
(Petro)
November 23, 2020, 3:42pm
24
hannes3488:
{% set months = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'] %}
{{ now().strftime (' %d'), now().timestamp() | timestamp_custom(months[now().month] ~ ' %Y') }}
change to
{% set months = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'] %}
{{ now().strftime('%d') ~ ', ' ~ months[now().month-1] ~ now().timestamp() | timestamp_custom(' %Y') }}
or
{% set months = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'] %}
{{ (now().timestamp() | timestamp_custom('%d, # %Y')).replace('#', months[now().month-1]) }}
1 Like
dbrunt
(Daniel)
August 6, 2021, 5:56am
26
You Sir are THE timestamp template guru!! With the above info I was able to template my lock log sensors’ dates and times!
1 Like
basti4k
(Sebastian)
August 7, 2021, 3:17pm
27
Hi all,
i search for a Solution:
here my output:
sensor.fritzbox_connection_uptime => 2021-07-24T00:34:26+00:00
But I want to show the time: 1 Week, 2 Days, 3 Hours, 2 Second…
Thanks all
Cadster
(Cadster)
August 7, 2021, 3:52pm
28
@basti4k
What have u tried and wich are the results? I gues you studied this tread?
basti4k
(Sebastian)
August 8, 2021, 5:42am
29
i try this:
net_uptime:
value_template: "{{ as_timestamp(strptime( states('sensor.fritzbox_connection_uptime'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom('%Y-%m-%d %H:%M:%S') }}"
unit_of_measurement: "Tage"
friendly_name: "Verbunden"
icon_template: mdi:calendar
For a other Day-Format. But now i search a “Counter”
basti4k
(Sebastian)
August 8, 2021, 7:04am
30
here my solution:
net_uptime_pretty:
friendly_name: Verbunden
value_template: >
{%- set up_time = as_timestamp(now())-as_timestamp(states('sensor.fritzbox_connection_uptime')) %}
{% if states('sensor.last_boot') == '0.0' %}
Soeben neu gestartet...
{% else %}
{%- macro phrase(name, divisor, mod=None) %}
{%- set value = ((up_time // divisor) % (mod if mod else divisor)) | int %}
{{- '{} {}'.format(value, name) if value | int > 0 else '' }}
{%- endmacro %}
{%- set values = [
phrase('W.', 60*60*24*7),
phrase('T.', 60*60*24, 7),
phrase('Std.', 60*60, 24),
phrase('Min.', 60),
phrase('Sek.', 1, 60)
] | select('!=','') | list %}
{{ values[:-1] | join(', ') ~ ' ' ~ values[-1] if values | length > 1 else values | first }}
{% endif %}
1 Like
htpc2308
(lulu)
June 9, 2022, 12:00pm
31
i tested the code that you posted, the list says when i use for example %A
for the weekday he takes my selected language in HA, but he always make the weekday english, my language is german.
petro
(Petro)
June 9, 2022, 12:03pm
32
Please read the full thread. It has a solution to your problem.
htpc2308
(lulu)
June 9, 2022, 12:16pm
33
okay, but i had problems to undestand how to add this to my code, perhaps you can give me a hint?
{{as_timestamp(strptime(state_attr('calendar.famillien_termine', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom("%A %d.%b %-H:%M")}}
petro
(Petro)
June 9, 2022, 12:18pm
34
Sir, it’s literally posted above. Please read the thread. That requires you to read my post, then read the responses IN THIS THREAD.
Here’s a hint, this post has the code:
You don’t need a data template, just the value template. Since now() has a weekday() method, you can use that to directly map into a list of abbreviated localized weekday names:
# Abbr. localized date: Fr 31.07.
- platform: template
sensors:
date2:
friendly_name: "Datum"
entity_id: sensor.time
value_template: >
{% set days = ['Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So'] %}
{{ now().timestamp() | timestamp_custom(days[now().weekday()] ~ ' %d…
htpc2308
(lulu)
June 9, 2022, 12:51pm
35
Yeah sir,
i understand it but i use it different i dont want to use the now().timestamp()
function.
what i understand is
{{as_timestamp(strptime(state_attr('calendar.famillien_termine', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom("%w")}}
this gives me the day as number, i think this is needed for the days variable. (its one day to much but i think i can adjust it with -1 because he counts from 0)
{% set days = ['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag'] %}
{{ as_timestamp(strptime(state_attr('calendar.famillien_termine', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom(days[now().weekday()-1] ~ ' %d.%b %-H:%M') }}
now i must replace the now().weekday()-1
with my value from the entity.
i tried it with this
{% set days = ['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag'] %}
{{ as_timestamp(strptime(state_attr('calendar.famillien_termine', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom(days[as_timestamp(strptime(state_attr('calendar.famillien_termine', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom("%w")] ~ ' %d.%b %-H:%M') }}
but this gives me a error.
UndefinedError: 'list object' has no attribute '6'
petro
(Petro)
June 9, 2022, 12:56pm
36
strptime(state_attr('calendar.famillien_termine', 'start_time'), '%Y-%m-%d %H:%M:%S')) | timestamp_custom("%w") | int
1 Like