Convert seconds to days, hours, minutes

The uptime sensor is very limited in functionality. I’m still using my template sensor for exactly that reason:

- platform: template
  sensors:
    since_last_boot_templated:
      value_template: >-
        {%- if states.sensor.since_last_boot -%}
          {%- set slb = states.sensor.since_last_boot.state.split(' ') -%}
          {%- set count = slb | length -%}
          {%- set hms = slb[count - 1] -%}
          {%- set hms_split = hms.split(':') -%}
          {%- set hours = hms_split[0] | int -%}
          {%- set minutes = hms_split[1] | int -%}
          {%- if count == 3 -%}
            {%- set days = slb[0] | int -%}
          {%- else -%}
            {%- set days = 0 -%}
          {%- endif -%}

          {%- if days == 0 and hours == 0 and minutes == 0 -%}
            less than a minute
          {%- else -%}
            {%- if days > 0 -%}
              {%- if days == 1 -%}
                1 day
              {%- else -%}
                {{ days }} days
              {%- endif -%}
            {%- endif -%}
            {%- if hours > 0 -%}
              {%- if days > 0 -%}
                {{ ', ' }}
              {%- endif -%}
              {%- if hours == 1 -%}
                1 hour
              {%- else -%}
                {{ hours }} hours
              {%- endif -%}
            {%- endif -%}
            {%- if minutes > 0 -%}
              {%- if days > 0 or hours > 0 -%}
                {{ ', ' }}
              {%- endif -%}
              {%- if minutes == 1 -%}
                1 minute
              {%- else -%}
                {{ minutes }} minutes
              {%- endif -%}
            {%- endif -%}
          {%- endif -%}
        {%- else -%}
          n/a
        {%- endif -%}
      entity_id: sensor.since_last_boot

The entity sensor.since_last_boot on which I based the sensor above, is provided by the System Monitor.