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.3.tar.gz (4.3 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.3-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: relative_datetime-0.1.3.tar.gz
  • Upload date:
  • Size: 4.3 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.3.tar.gz
Algorithm Hash digest
SHA256 6f98a9652bc0be525756a0be7e5befb6a0e4d7b5f7173a5403d32058b5d40845
MD5 34fa65f4def78cdcf3ffb37e39913d5b
BLAKE2b-256 a70503d75e50c3f40319d4746f11fed918df2ba90445355f8aa000b70d5cac30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for relative_datetime-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2e09dbc5e5d982f8058e292893fd31156977a3d76cc57db21580cd8e01b1fd78
MD5 a599bf0d27817c187d8c4d9df508d63e
BLAKE2b-256 7b807243e44185b651fc327d430b015e3106daadacfc95afa888293c07e6d719

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