pytimeparse2 1.7.1

Creator: codyrutscher

Last updated:

Add to Cart

Description:

pytimeparse2 1.7.1

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

Speed up with Cython for some python versions.
Use github actions for testing and releasing.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.