Примеры работы с датами в шаблонах Home Assistant

Получить текущую дату и время

{{ now() }}

Пример результата:

2021-03-28 13:10:00.026751+03:00

Время отображается в часовом поясе который указан в настройках Home Assistant.

Форматирование даты и времени

Пример использования функции strftime:

{{ now().strftime("%d %B %Y %H:%M:%S %Z") }}

Пример результата:

28 March 2021 13:48:00 MSK

Документация какие коды можно использовать в функции: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes

Timestamp

Очень популярный формат представления даты-времени в компьютерах. Это число которое означает количество секунд с 00:00:00 1 января 1970 года.

{{ now() | as_timestamp() }}

Пример результата:

1616926514.347887

Можно сделать это и другим способом:

{{ as_timestamp( now() ) }}

Разные способы получить фрагмент текущей даты-времени

Результат работы всех трех шаблонов одинаковой — текущий год.

{{ now().year }}
{{ now().strftime('%Y') }}
{{ now().timestamp() | timestamp_custom("%Y") }}

Создать timestamp из строки

{{ as_timestamp('2020-08-01 12:00:00') }}

Строка воспринимается как дата-время в часовом поясе который указан в настройках Home Assistant.

В том случае если в строке данные о дате и времени находятся в каком-то необычном порядке, то нужно дополнительно использовать функцию strptime:

{% set dt = "17:49:44 2020-11-20" %}
{{ as_timestamp(strptime(dt, '%H:%M:%S %Y-%m-%d')) | timestamp_custom('%Y-%m-%d %H:%M:%S %Z') }}

Получить дату-время в будущем

Вот пример как получить дату-время плюс два часа от текущего момента:

{{ (now().timestamp() + 60*60*2) | timestamp_custom('%Y-%m-%d %H:%M:%S') }}

relative_time

{{ relative_time(state_attr('automation.enable_zigbee_joining', 'last_triggered')) }}

Пример результата:

10 days

Значения last_updated в разных форматах и часовых поясах

{{ states.sensor['0x00158d00040df945_temperature'].last_updated }}
{{ states.sensor['0x00158d00040df945_temperature'].last_updated.strftime('%Y-%m-%d %H:%M:%S') }}
{{ as_timestamp(states.sensor['0x00158d00040df945_temperature'].last_updated) | timestamp_custom('%Y-%m-%d %H:%M:%S') }}

Результат:

2021-04-30 08:51:07.797174+00:00
2021-04-30 08:51:07
2021-04-30 11:51:07

Первая и вторая строчка возращают дату-время в часовом поясе UTC. Вариант с timestamp_custom() возвращает дату-время в часовом поясе Home Assistant.

Редактировать страницу на GitHub