Skip to main content

A Python library to get relative datetime strings and parse datetime strings.

Project description

relative-datetime

relative-datetime is a Python library for working with relative datetime strings and parsing datetime strings. It provides utility functions to easily convert datetime objects to human-readable relative times and to parse various datetime string formats into datetime objects.

"Buy Me A Coffee"

Features

  • Convert datetime objects to human-readable relative time strings, such as:
    • "2 seconds ago"
    • "5 minutes ago"
    • "3 hours ago"
    • "1 day ago"
    • "2 weeks ago"
    • "1 month ago"
    • "2 years ago"
  • Determine if a datetime object is in the past or future.
  • Parse a wide variety of datetime string formats into datetime objects.
  • Support for timezones.

Installation

You can install the library using pip:

pip install relative-datetime

Usage

Importing the Library

from relative_datetime import DateTimeUtils

Getting Relative Datetime Strings

To convert a datetime object to a relative datetime string and determine if it is in the past or future, use the relative_datetime method.

Example 1: Datetime in the Past

from datetime import datetime, timedelta
import pytz
from relative_datetime import DateTimeUtils

# Example datetime object (1 day ago)
input_datetime = datetime.now(pytz.utc) - timedelta(days=1)

# Get relative datetime string and direction
relative_time, direction = DateTimeUtils.relative_datetime(input_datetime)
print(f"Relative time: {relative_time}, Direction: {direction}")
# Output: Relative time: 1 day, Direction: past

Example 2: Datetime in the Future

from datetime import datetime, timedelta
import pytz
from relative_datetime import DateTimeUtils

# Example datetime object (in 2 hours)
input_datetime = datetime.now(pytz.utc) + timedelta(hours=2)

# Get relative datetime string and direction
relative_time, direction = DateTimeUtils.relative_datetime(input_datetime)
print(f"Relative time: {relative_time}, Direction: {direction}")
# Output: Relative time: 2 hours, Direction: future

Parsing Datetime Strings

To parse a datetime string into a datetime object, use the parse_datetime method.

Example 1: ISO 8601 Format

from relative_datetime import DateTimeUtils

# Example datetime string in ISO 8601 format
datetime_string = "2023-06-01T12:34:56Z"

# Parse the datetime string
parsed_datetime = DateTimeUtils.parse_datetime(datetime_string)
print(f"Parsed datetime: {parsed_datetime}")
# Output: Parsed datetime: 2023-06-01 12:34:56+00:00

Example 2: Custom Format

from relative_datetime import DateTimeUtils

# Example datetime string in a custom format
datetime_string = "June 1, 2023 12:34 PM"

# Parse the datetime string
parsed_datetime = DateTimeUtils.parse_datetime(datetime_string)
print(f"Parsed datetime: {parsed_datetime}")
# Output: Parsed datetime: 2023-06-01 12:34:00+00:00

Handling Different Timezones

The library can also handle datetime objects with different timezones.

Example: Datetime with a Specific Timezone

from datetime import datetime
import pytz
from relative_datetime import DateTimeUtils

# Example datetime object with a specific timezone
timezone = pytz.timezone("Asia/Singapore")
input_datetime = timezone.localize(datetime(2023, 6, 1, 12, 0, 0))

# Get relative datetime string and direction
relative_time, direction = DateTimeUtils.relative_datetime(input_datetime)
print(f"Relative time: {relative_time}, Direction: {direction}")

Contributing

Contributions are welcome! Please fork the repository and submit a pull request with your changes.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Explanation of Examples

  • Example 1: Datetime in the Past: Demonstrates how to convert a datetime object representing a time in the past to a relative time string.
  • Example 2: Datetime in the Future: Demonstrates how to convert a datetime object representing a future time to a relative time string.
  • Example 1: ISO 8601 Format: Shows how to parse a datetime string in the ISO 8601 format.
  • Example 2: Custom Format: Shows how to parse a datetime string in a custom format.
  • Example: Datetime with a Specific Timezone: Demonstrates handling of datetime objects with specific timezones.

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

relative_datetime-0.1.4.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

relative_datetime-0.1.4-py3-none-any.whl (4.5 kB view details)

Uploaded Python 3

File details

Details for the file relative_datetime-0.1.4.tar.gz.

File metadata

  • Download URL: relative_datetime-0.1.4.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.10.4

File hashes

Hashes for relative_datetime-0.1.4.tar.gz
Algorithm Hash digest
SHA256 150dec9196964c0211c7dd39273ddaa8ffde2df44c2c27fb80c5148ffafdf0d0
MD5 80408734a1b7ad0d85a8d911ce681f29
BLAKE2b-256 1d4bfd8bd2b4ed555851e3077e1f396f608b3cfc37fcda2214e159aed87f2b28

See more details on using hashes here.

File details

Details for the file relative_datetime-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for relative_datetime-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1fee9b915d85b43e62547c4c8d69a66456786c439ff2d42b056a49b6f3fd7f93
MD5 3332926cebd0ecc11b908c4e3c8b95c4
BLAKE2b-256 e75cdc08ccc12227f9becdbc0220ca8d3aa0acfd8807898f72edbbab036ae937

See more details on using hashes here.

Supported by

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