Skip to main content

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

flexible_datetime-0.3.2.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

flexible_datetime-0.3.2-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file flexible_datetime-0.3.2.tar.gz.

File metadata

  • Download URL: flexible_datetime-0.3.2.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.9 Darwin/23.0.0

File hashes

Hashes for flexible_datetime-0.3.2.tar.gz
Algorithm Hash digest
SHA256 ea546bf556e687e046fc0e704408d6af19d67099e2f151a07d23877e4060cd06
MD5 cb36faaf6b5a5e081bf16303357079f2
BLAKE2b-256 9a23bf377cffe474a7c429380cba13c32d24c4a8b34bc68e9279ec78b6f19da5

See more details on using hashes here.

File details

Details for the file flexible_datetime-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for flexible_datetime-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 500b8c2982eae90c93dea6fa1edf5c3fc8d3c2c66c13547c2bba5e0149d3d4b9
MD5 7fa118e80f63c1d6aec26bc47970ccac
BLAKE2b-256 b294bc0fe40e45c42b195ed080bcab1d90ea492a9c6af8bcae29a3375c4c6403

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page