All Projects → thombashi → DateTimeRange

thombashi / DateTimeRange

Licence: MIT license
DateTimeRange is a Python library to handle a time range. e.g. check whether a time is within the time range, get the intersection of time ranges, truncating a time range, iterate through a time range, and so forth.

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to DateTimeRange

vue-moment-jalaali
Jalaali Moment.js filters for your Vue.js project
Stars: ✭ 59 (-25.32%)
Mutual labels:  datetime
sqlalchemy-utc
SQLAlchemy type to store aware datetime values
Stars: ✭ 87 (+10.13%)
Mutual labels:  datetime
persiantools
Jalali date and datetime with other tools
Stars: ✭ 101 (+27.85%)
Mutual labels:  datetime
lit-date
Light-weight, faster datetime formatter for modern browsers.
Stars: ✭ 33 (-58.23%)
Mutual labels:  datetime
date-extractor
Extract dates from text
Stars: ✭ 58 (-26.58%)
Mutual labels:  datetime
Doramon
个人工具汇总:一致性哈希工具,Bitmap工具,布隆过滤器参数生成器,Yaml和properties互转工具,一键式生成整个前后端工具,单机高性能幂等工具,zookeeper客户端工具,分布式全局id生成器,时间转换工具,Http封装工具
Stars: ✭ 53 (-32.91%)
Mutual labels:  time-range
hawking
A Natural Language Date Time Parser that Extract date and time from text with context and parse to the required format
Stars: ✭ 168 (+112.66%)
Mutual labels:  datetime
vscode-insertdatestring
An extension for Visual Studio Code that provides a configurable command for inserting the current date and time
Stars: ✭ 58 (-26.58%)
Mutual labels:  datetime
open hours
Time calculations using business hours
Stars: ✭ 41 (-48.1%)
Mutual labels:  datetime
NALib
General purpose C sourcecode collection
Stars: ✭ 16 (-79.75%)
Mutual labels:  datetime
react-calendar-datetime-picker
A simple and fast date and time picker component for React
Stars: ✭ 58 (-26.58%)
Mutual labels:  datetime
ng-data-picker
🏄🏼 A data picker based on Angular 4+ (like native datetime picker of iOS)
Stars: ✭ 24 (-69.62%)
Mutual labels:  datetime
SilkierQuartz
SilkierQuartz can host jobs using HostService and Provide a web management tools for Quartz !
Stars: ✭ 263 (+232.91%)
Mutual labels:  datetime
angular-datetime-inputs
📅 Angular directives for datetime inputs
Stars: ✭ 20 (-74.68%)
Mutual labels:  datetime
php-helpers
An extensive set of PHP helper functions and classes.
Stars: ✭ 27 (-65.82%)
Mutual labels:  datetime
TimeRangePicker
A customizable, easy-to-use, and functional circular time range picker library for Android. Use this library to mimic Apple's iOS or Samsung's bedtime picker.
Stars: ✭ 266 (+236.71%)
Mutual labels:  time-range
SQL-for-Data-Analytics
Perform fast and efficient data analysis with the power of SQL
Stars: ✭ 187 (+136.71%)
Mutual labels:  datetime
datetime
A Go (golang) library for parsing most ISO8601 timestamps
Stars: ✭ 24 (-69.62%)
Mutual labels:  datetime
datium
⏰ The flexible DataTime Package written in PHP
Stars: ✭ 18 (-77.22%)
Mutual labels:  datetime
Itinerary
Lazy time scheduling toolset for .NET
Stars: ✭ 28 (-64.56%)
Mutual labels:  datetime

Summary

DateTimeRange is a Python library to handle a time range. e.g. check whether a time is within the time range, get the intersection of time ranges, truncating a time range, iterate through a time range, and so forth.

PyPI package version conda-forge package version Supported Python versions Test result of Linux/macOS/Windows Test coverage CodeQL GitHub stars

Examples

Create a DateTimeRange instance from start and end datetime

Sample Code:
from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
str(time_range)
Output:
'2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900'

Create a DateTimeRange instance from a range text

Sample Code:
from datetimerange import DateTimeRange
time_range = DateTimeRange.from_range_text("2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900")
str(time_range)
Output:
'2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900'

Get an iterator

Sample Code 1:
import datetime
from datetimerange import DateTimeRange

time_range = DateTimeRange("2015-01-01T00:00:00+0900", "2015-01-04T00:00:00+0900")
for value in time_range.range(datetime.timedelta(days=1)):
    print(value)
Output 1:
2015-01-01 00:00:00+09:00
2015-01-02 00:00:00+09:00
2015-01-03 00:00:00+09:00
2015-01-04 00:00:00+09:00
Sample Code 2:
from datetimerange import DateTimeRange
from dateutil.relativedelta import relativedelta

time_range = DateTimeRange("2015-01-01T00:00:00+0900", "2016-01-01T00:00:00+0900")
for value in time_range.range(relativedelta(months=+4)):
    print(value)
Output 2:
2015-01-01 00:00:00+09:00
2015-05-01 00:00:00+09:00
2015-09-01 00:00:00+09:00
2016-01-01 00:00:00+09:00

Test whether a value within the time range

Sample Code:
from datetimerange import DateTimeRange

time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
print("2015-03-22T10:05:00+0900" in time_range)
print("2015-03-22T10:15:00+0900" in time_range)

time_range_smaller = DateTimeRange("2015-03-22T10:03:00+0900", "2015-03-22T10:07:00+0900")
print(time_range_smaller in time_range)
Output:
True
False
True

Test whether a value intersect the time range

Sample Code:
from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
x = DateTimeRange("2015-03-22T10:05:00+0900", "2015-03-22T10:15:00+0900")
time_range.is_intersection(x)
Output:
True

Make an intersected time range

Sample Code:
from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
x = DateTimeRange("2015-03-22T10:05:00+0900", "2015-03-22T10:15:00+0900")
time_range.intersection(x)
Output:
2015-03-22T10:05:00+0900 - 2015-03-22T10:10:00+0900

Make an encompassed time range

Sample Code:
from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
x = DateTimeRange("2015-03-22T10:05:00+0900", "2015-03-22T10:15:00+0900")
time_range.encompass(x)
Output:
2015-03-22T10:00:00+0900 - 2015-03-22T10:15:00+0900

Truncate time range

Sample Code:
from datetimerange import DateTimeRange

time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
time_range.is_output_elapse = True
print("before truncate: ", time_range)

time_range.truncate(10)
print("after truncate:  ", time_range)
Output:
before truncate:  2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900 (0:10:00)
after truncate:   2015-03-22T10:00:30+0900 - 2015-03-22T10:09:30+0900 (0:09:00)

For more information

More examples are available at https://datetimerange.rtfd.io/en/latest/pages/examples/index.html

Examples with Jupyter Notebook is also available at DateTimeRange.ipynb

Installation

Installation: pip

pip install DateTimeRange

Installation: conda

conda install -c conda-forge dataproperty

Dependencies

Documentation

https://datetimerange.rtfd.io/

Sponsors

Dmitry Belyaev (b4tman) Charles Becker (chasbecker) Arturi0

Become a sponsor

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].