Calculation of time frames using the built-in datetime module
Project description
TimeFrame
Introduction
This package makes the following calculations on datetime
:
- Adding two time frames, resulting in one bigger time frame or two disjoint one.
- Multiplying two time frames, resuling in either an overlapped time frame or an empty one, depending on the two time frames.
- Substracting two time frames, resuling in one or several time frames.
Install
Installing the package is as simple as running the following command inside your terminal:
pip install timeframe
Examples
NOTE: You can always take a look at the test cases in the tests directory to get a sense of how to use the package, but consider the below examples first, because it's fairly easy to use.
You need to import datetime
as well as TimeFrame
:
from datetime import datetime
from timeframe import TimeFrame
Inclusion
New API
>>> tf1 = TimeFrame(datetime(2021, 1, 1), datetime(2021, 1, 2))
>>> tf2 = TimeFrame(datetime(2021, 1, 1, 12), datetime(2021, 1, 1, 13))
>>> tf2 in tf1
True
Deprecated
This implies whether or not one time frame includes another; it can also be
used to check if a datetime
is inside one TimeFrame
.
When you want to check if a datetime
is inside a TimeFrame
:
tf1 = TimeFrame(datetime(2021, 1, 26, 19), datetime(2021, 1, 26, 20))
tf1.includes(datetime(2021, 1, 26, 19, 30))
# output: True
When You want to check if an instance of TimeFrame
is inside another one:
tf2 = TimeFrame(datetime(2021, 1, 26, 19, 30), datetime(2021, 1, 26, 19, 40))
tf1.includes(tf2)
# output: True
tf3 = TimeFrame(datetime(2021, 1, 26, 19, 45), datetime(2021, 1, 26, 21, 30))
tf1.includes(tf3)
# output: False
Duration
TimeFrame
has a property named duration
which can be used to retrieve the
total amount of seconds that TimeFrame
has:
tf1.duration
# output: 3600.0
tf2.duration
# output: 600.0
tf3.duration
# output: 6300.0
Comparison
You can always compare two TimeFrame
to see if one is greater than the other or not.
This comparison is based on the end
of one TimeFrame
and the start
of the other.
tf1 > tf2
# output: False
tf3 > tf2
# output: True
You can also compare equality using either greater-equal sign, or a simple equal.
tf1 == tf2
# output: False
tf3 >= tf2
# output: True
Overlap
When you want to know how much two time frames have in common, use multiply sign:
tf1 * tf2
# output: 2021-01-26T19:30:00#2021-01-26T19:40:00
tf2 * tf3
# output: Empty TimeFrame
You can also check their duration as well:
(tf1 * tf2).duration
# output: 600.0
(tf2 * tf3).duration
# output: 0.0
Summation (union)
The summation sign is used to get the union of two time frames:
tf1 + tf2
# output: 2021-01-26T19:00:00#2021-01-26T20:00:00
(tf1 + tf2).duration
# output: 3600.0
tf1 + tf3
# output: 2021-01-26T19:00:00#2021-01-26T21:30:00
(tf1 + tf3).duration
# output: 9000.0
Minus
You can also substract one time frame from the other, which will ultimately result in either two disjoint time frames, or one unified time frame, depending on the time frames.
tf1 - tf2
# output:
# 2021-01-26T19:00:00#2021-01-26T19:29:59.999999
# 2021-01-26T19:40:00.000001#2021-01-26T20:00:00
(tf1 - tf2).duration
# output: 2999.999998
Substracting two disjoint time frames will return the first time frame as a result.
tf2 - tf3
# output: 2021-01-26T19:30:00#2021-01-26T19:40:00
(tf2 - tf3).duration
# output: 600.0
(tf2 - tf3) == tf2
# output: True
Acknowledgment
Thank you for showing interest in this package. Feel free to contact me if you feel like it. 🥂
Contribution
Any contribution of any size is greatly appreciated. Feel free to open a PR or issue in the github page at any time. 🤗
Stargazers over time
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file timeframe-3.0.0.tar.gz
.
File metadata
- Download URL: timeframe-3.0.0.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5f22cfbfc015c9b2f3c19d1d9611b9bb305d766b830893074baef0d4ccbb6f5 |
|
MD5 | 22a62f8d6f48e88bee2405f443f24b47 |
|
BLAKE2b-256 | e5bb605bb750a736f70bf2872ad173c5d390801ff5846c74cb5dda9ba8cb11a4 |
File details
Details for the file timeframe-3.0.0-py3-none-any.whl
.
File metadata
- Download URL: timeframe-3.0.0-py3-none-any.whl
- Upload date:
- Size: 7.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac062fcad42d0fd368e3e07fc6c04b9e7924a5dda3b13fb693d527e4a35072c3 |
|
MD5 | 46e5536fb8718ef99d45e3bbabfb43ad |
|
BLAKE2b-256 | 7db12ee9adcc7d2425097aa2f70b6cbd98e20ed8bc2dc3aaf2f49e46a87afbfd |