Add easy converti 8000 ng string timestamps/dates to datetime objects in templates #51576
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proposed change
Working with date & time already hard, however, today it dawned on me that there is one additional reason we made it additionally hard: We don't offer a way to get a Python datetime object from a datetime string.
This PR is inspired by #51524, which is our cert expire sensor, which recently changed to use a timestamp as a state. For users, this is hard to use or calculate deltas with.
We do offer
strptime
, but that needs to specify the format, which is really inconvenient.As a result, our forums are full with solutions that use
as_timestamp
to calculate back from seconds difference and more like those. I've even seen a full template that converts seconds from the timestamp back to some kind of human representation using a lot of calculations.This PR exposes our own
util.dt.parse_time
to the template engine, which is able to parse a lot of different time occurrences (including being timezone aware if possible), to a datetime object for easy use.This can be used both as a filter and as a function.
{{ '2016-10-19 15:22:05.588122+0100' | as_datetime }}
{{ as_datetime('2016-10-19 15:22:05.588122+0100') }}
Example for the cert expire sensor showing number of days left:
Type of change
Additional information
Checklist
black --fast homeassistant tests
)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest
.requirements_all.txt
.Updated by running
python3 -m script.gen_requirements_all
..coveragerc
.The integration reached or maintains the following Integration Quality Scale:
To help with the load of incoming pull requests: