Skip to main content

Parse shorthand datetime strings in the Elasticsearch date math format. Inspired by Grafana.

Project description

Shorthand datetime

Simple package to parse shorthand datetime strings in the Elasticsearch date math format.

Using the package

# Simplest usage example
from shorthand_datetime.shorthand import parse_shorthand_datetime

string = 'now-7d'
dt = parse_shorthand_datetime(string)
print(f'{string} -> {dt}')
# Suppose the current date is 2023-10-25 12:21:45+00:00
# Output: now-7d -> 2023-10-18 12:21:45+00:00
# Example with freeze_time for testings
from freezegun import freeze_time
from shorthand_datetime import parse_shorthand_datetime

@freeze_time("2023-10-25 12:21:45+00:00")
def test_now():
    strings = ['now-7d', 'now/d', 'now-7d/d', 'now/M', 'now-1M/M',
               'now-3W+6h', 'now-1M+1W/d']
    for string in strings:
        print(f'{string} -> {parse_shorthand_datetime(string)}')

# Call the test and print the results
test_now()

Output:

now-7d -> 2023-10-18 12:21:45+00:00
now/d -> 2023-10-25 00:00:00+00:00
now-7d/d -> 2023-10-18 00:00:00+00:00
now/M -> 2023-10-01 00:00:00+00:00
now-1M/M -> 2023-09-01 00:00:00+00:00
now-3W+6h -> 2023-10-04 18:21:45+00:00
now-1M+1W/d -> 2023-10-02 00:00:00+00:00
# Example with timezone
from shorthand_datetime import parse_shorthand_datetime

# Using the timezone as a parameter
string_1 = 'now-7d'
dt_1 = parse_shorthand_datetime(string_1, tz='Europe/Brussels')

# Using the timezone as part of the string
string_2 = 'now-7d"Europe/Brussels"'
dt_2 = parse_shorthand_datetime(string_2)

assert str(dt_1.tzinfo) == str(dt_2.tzinfo) == "Europe/Brussels"

Typical examples

By default, datetime strings are parsed in UTC. However, you can specify a timezone using the tz parameter or by including it in the string.

  • now-7d: current timestamp minus 7 days

  • now/d: today, rounded to the start of the day

  • now-7d/d: 7 days ago, rounded to the start of the day

  • now/M: first day of this month

  • now-1M/M: first day of previous month

  • now-3W+6h: 3 weeks ago plus 6 hours

  • now-1M+1W/d: 1 month ago plus 1 week, rounded to the start of the day

  • now'America/New_York': current timestamp in America/New_York

  • now-7d'America/New_York': 7 days ago in America/New_York

Acknowledgements

© 2024 24SEA - Monitoring Offshore Structures. All rights reserved.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shorthand_datetime-0.4.0.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

shorthand_datetime-0.4.0-py2.py3-none-any.whl (7.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file shorthand_datetime-0.4.0.tar.gz.

File metadata

  • Download URL: shorthand_datetime-0.4.0.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.8.18

File hashes

Hashes for shorthand_datetime-0.4.0.tar.gz
Algorithm Hash digest
SHA256 00e3070c5480074eb08eb559524f8e5308e810812b502db19f620052fd1d941a
MD5 451dfe00d62a0e1128489d509677f6ca
BLAKE2b-256 a40118d958d086c477fbda290989f44aef8d7cf9696fa025f5e6cac5af5efaf1

See more details on using hashes here.

File details

Details for the file shorthand_datetime-0.4.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for shorthand_datetime-0.4.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 51ce402de3d7d4997c0a67e59cb392157f213802b267014b76cb3abd4a4f4cca
MD5 69b95a946a3b32a3c26ebb07f6eb352a
BLAKE2b-256 42e010d5ab59471e80ba8dad8884887246460528f84695e29c00ad86d431c109

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page