Skip to main content
Pipeline status https://badge.fury.io/py/pytimeparse2.svg

This is a pytimeparse based project with the aim of optimizing functionality and providing stable support.

Copyright (c) 2021 Sergey Klyuykov <onegreyonewhite@mail.ru>

Licensed under the MIT License (see source file pytimeparse2.py for details).

A small Python library to parse various kinds of time expressions, inspired by this StackOverflow question.

The single function pytimeparse2.parse defined in the library parses time expressions like the following:

  • 32m

  • 2h32m

  • 3d2h32m

  • 1w3d2h32m

  • 1w 3d 2h 32m

  • 1 w 3 d 2 h 32 m

  • 4:13

  • 4:13:02

  • 4:13:02.266

  • 2:04:13:02.266

  • 2 days, 4:13:02 (uptime format)

  • 2 days, 4:13:02.266

  • 5hr34m56s

  • 5 hours, 34 minutes, 56 seconds

  • 5 hrs, 34 mins, 56 secs

  • 2 days, 5 hours, 34 minutes, 56 seconds

  • 1.2 m

  • 1.2 min

  • 1.2 mins

  • 1.2 minute

  • 1.2 minutes

  • 172 hours

  • 172 hr

  • 172 h

  • 172 hrs

  • 172 hour

  • 1.24 days

  • 5 d

  • 5 day

  • 5 days

  • 5.6 wk

  • 5.6 week

  • 5.6 weeks

It returns the time as a number of seconds (an integer value if possible, otherwise a floating-point number):

>>> from pytimeparse import parse
>>> parse('1.2 minutes')
72

For months and years, the library does not consider complications such as leap- years and leap-seconds. Instead, it assumes “30 days for a month” and “365 days for a year” as the basis for calculations with those units.

  • 2 mo

  • 2 months

  • 3y

  • 3 years

  • 1y2mo3w4d5h6m7s8ms

For better capability with dates, use keyword as_timedelta=True which mark for function returns value as datetime.timedelta or dateutil.relitivedelta.relativedelta (if installed):

>>> from pytimeparse import parse
>>> parse('24h', as_timedelta=True)
relativedelta(days=+1)

You can also forced disable dateutil support by calling disable_dateutil() before parse(...). For returning support call enable_dateutil().

Notes

A number of seconds can be converted back into a string using the datetime module in the standard library, as noted in this other StackOverflow question:

>>> from pytimeparse import parse
>>> import datetime
>>> parse('1 day, 14:20:16')
138016
>>> str(datetime.timedelta(seconds=138016))
'1 day, 14:20:16'

Future work

  1. Speed up with Cython for some python versions.

  2. Use github actions for testing and releasing.

Metadata

Release files for pytimeparse2 1.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytimeparse2 1.7.1
File Size Uploaded
pytimeparse2-1.7.1.tar.gz 10.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytimeparse2 1.7.1
File Interpreter ABI Platform
pytimeparse2-1.7.1-py3-none-any.whl Python 3 none any Details

Total release size: 16.6 kB

Release files / pytimeparse2-1.7.1.tar.gz

Download URL pytimeparse2-1.7.1.tar.gz
Size 10.4 kB
Tags Source
SHA-256 checksum
How to use checksums
98668cdcba4890e1789e432e8ea0059ccf72402f13f5d52be15bdfaeb3a8b253
BLAKE2b-256 checksum
How to use checksums
1910cc63fecd69905eb4d300fe71bd580e4a631483e9f53fdcb8c0ad345ce832
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.15

Release files / pytimeparse2-1.7.1-py3-none-any.whl

Download URL pytimeparse2-1.7.1-py3-none-any.whl
Size 6.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a162ea6a7707fd0bb82dd99556efb783935f51885c8bdced0fce3fffe85ab002
BLAKE2b-256 checksum
How to use checksums
179e85abf91ef5df452f56498927affdb7128194d15644084f6c6722477c305b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.14 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.15

Release history Release notifications | RSS feed

This release

1.7.1 This release

2 release files

1.7.0

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page