8000 Add easy converting string timestamps/dates to datetime objects in templates by frenck · Pull Request #51576 · home-assistant/core · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Add easy converti 8000 ng string timestamps/dates to datetime objects in templates #51576

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 7, 2021

Conversation

frenck
Copy link
Member
@frenck frenck commented Jun 7, 2021

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.

image

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') }}

image

Example for the cert expire sensor showing number of days left:

image

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

Checklist

  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • The code has been formatted using Black (black --fast homeassistant tests)
  • Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • Untested files have been added to .coveragerc.

The integration reached or maintains the following Integration Quality Scale:

  • No 8000 score or internal
  • 🥈 Silver
  • 🥇 Gold
  • 🏆 Platinum

To help with the load of incoming pull requests:

@frenck frenck merged commit 4c51299 into dev Jun 7, 2021
@frenck frenck deleted the frenck-2021-1697 branch June 7, 2021 13:02
@github-actions github-actions bot locked and limited conversation to collaborators Jun 8, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
0