Relative_time including minutes?

Here’s a calculation that works with any time difference.

For just hours and minutes, it would be:

          {%- set word_for_and = 'and' %}
          {%- set up_time = as_timestamp(utcnow())-as_timestamp(states.input_datetime.example.last_changed) %}

          {%- macro phrase(name, plural_name, divisor, mod=None) %}
            {%- set value = ((up_time // divisor) % (mod if mod else divisor)) | int %}
            {%- set name = plural_name if value > 1 else name %}
            {{- '{} {}'.format(value, name) if value | int > 0 else '' }}
          {%- endmacro %}
          
          {%- set values = [ 
                     phrase('hour', 'hours', 60*60),
                     phrase('minute', 'minutes', 60), 
                 ] | select('!=','') | list %}
                        
          {{ values[:-1] | join(', ') ~ ' ' ~ word_for_and ~ ' ' ~ values[-1] if values | length > 1 else values | first }}
2 Likes