Flexible datetime handling for Python
Project description
FlexDateTime
FlexDateTime
is a Python class that provides flexible and enhanced functionality for handling and comparing dates and times using the Arrow library and Pydantic.
Description
The FlexDateTime
class allows you to:
- Parse dates and times from strings with various formats
- Mask specific components (year, month, day, hour, minute, second) for comparison purposes
- Serialize and deserialize dates and times with Pydantic V2
- Easily compare dates and times with masked components
Installation
To use FlexDateTime
, you need to install the dependencies: arrow
and pydantic
.
pip install flexible-datetime
Usage
Creating an Instance
You can create a FlexDateTime
instance by providing a date string and an optional input format.
from flexdatetime import FlexDateTime
# Create an instance with the current utc time
current_time = FlexDateTime()
# Create an instance from a date string
date_time = FlexDateTime.from_str("2023-06-28T15:30:00")
# Create an instance from a date string with only year month day
date_time = FlexDateTime.from_str("2023-06-28")
# Create an instance from a date string with only year and moth
date_time = FlexDateTime.from_str("2023-06")
# Create an instance from a date string with only year
date_time = FlexDateTime.from_str("2023")
Masking Components
Masking is automatically determined at initialization, but can also be explicitly set.
Mask specific components of the date/time to exclude them from comparisons.
# Mask the year and month
date_time.apply_mask(year=True, month=True)
Comparing Instances
You can compare FlexDateTime
instances while respecting the mask.
date_time1 = FlexDateTime.from_str("2023-01-01T15:30:00")
date_time2 = FlexDateTime.from_str("2024-01-01")
date_time1.apply_mask(day=True, hour=True, second=True)
# Compare the two instances
print(date_time1 == date_time2) # True, because only the year, month, day have not been masked
String Representation
Get the string representation of the date/time considering the mask.
date_time = FlexDateTime.from_str("2000-01")
print(str(date_time)) # Output: "2000-01"
Example
Here's a complete example demonstrating the usage of FlexDateTime
:
from flexdatetime import FlexDateTime
# Create an instance from a date string
date_time1 = FlexDateTime.from_str("2000-01-01")
date_time2 = FlexDateTime.from_str("2024-01-01")
# Mask the year
date_time2.apply_mask(year=True)
# Compare the two instances
print(date_time == another_date_time) # True, because the year is masked
License
This project is licensed under the MIT License - see the LICENSE file for details.
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
Built Distribution
File details
Details for the file flexible_datetime-0.2.0.tar.gz
.
File metadata
- Download URL: flexible_datetime-0.2.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.9 Darwin/23.0.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b5ae831c7b09a80f32a9659f84e7e27f6508887bf2659730655f579076b3669 |
|
MD5 | 2f83729940d1b75226646085bee1b1f0 |
|
BLAKE2b-256 | d1902d123fc2acc8c1d9603f8949f00d0166bcf10f6fb62070642d2c18873a8c |
File details
Details for the file flexible_datetime-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: flexible_datetime-0.2.0-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.11.9 Darwin/23.0.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82a6d75af09f19347f7849122b5994be2c1ec8e0bc70c18edfdba65e9414a0ce |
|
MD5 | 3ad5d58c40b0be8f2c5ae386cb1c575f |
|
BLAKE2b-256 | 9e5cac8e356ce2f028bc24a6f5b296b102d6065d4bcd92324f5461351c76ba64 |