Nice formatting of timedelta instances
Project description
nice_duration
A Python library for formatting durations in a human-readable way. Convert timedelta objects or numeric time values into readable strings like 3h20m or 2w5d. This module features optional micro-second precision, configurable separators and flexible handling of zero-values.
Quick Start
from datetime import timedelta
from nice_duration import duration_string
# From timedelta objects
duration_string(timedelta=timedelta(hours=3, minutes=20)) # "3h20m"
# From seconds (int or float)
duration_string(seconds=200) # "3m20s"
duration_string(seconds=200.9) # "3h20m" (truncated)
# From milliseconds or microseconds
duration_string(milliseconds=1500) # "1s" (with default precision)
duration_string(microseconds=1500000) # "1s"
Precision Control
Control the smallest unit displayed. The precision parameter can be one of weeks,
days, hours, minutes, seconds, milliseconds or microseconds.
delta = timedelta(weeks=2, days=3, hours=4, minutes=5, seconds=30, microseconds=500000)
duration_string(timedelta=delta, precision="weeks") # "2w"
duration_string(timedelta=delta, precision="minutes") # "2w3d4h5m"
duration_string(timedelta=delta, precision="seconds") # "2w3d4h5m30s"
duration_string(timedelta=delta, precision="milliseconds") # "2w3d4h5m30s500ms"
Flexible Zero Handling
By default, zero values are omitted, but zeroes can be left alone when leading, trailing or infix.
delta = timedelta(days=3, minutes=12) # Note: no hours
duration_string(timedelta=delta) # "3d12m"
duration_string(timedelta=delta, infix_zeroes=True) # "3d0h12m"
duration_string(timedelta=delta, leading_zeroes=True) # "0w3d12m"
duration_string(timedelta=delta, trailing_zeroes=True) # "3d12m0s"
duration_string(timedelta=delta, all_zeroes=True) # "0w3d0h12m0s"
Custom Separators
Add spacing or custom separators between units:
delta = timedelta(hours=3, minutes=20)
duration_string(timedelta=delta, separator=" ") # "3h 20m"
Limitations
- Maximum unit is weeks (because bigger units have no fixed length)
- Float values are truncated
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nice_duration-1.0.8.tar.gz.
File metadata
- Download URL: nice_duration-1.0.8.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04e040ef27d91d18d52c41b6704d5f7ad0385e30be1d03cb4c9d187e74e2dde2
|
|
| MD5 |
80eeb567c6183f136cda558bd123da74
|
|
| BLAKE2b-256 |
dfba27273c111db6f1354ff521c1487639b5e3fea58ff7f16f66c54e7fac9e3e
|
File details
Details for the file nice_duration-1.0.8-py3-none-any.whl.
File metadata
- Download URL: nice_duration-1.0.8-py3-none-any.whl
- Upload date:
- Size: 5.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c3fc33562fe9e6e00527d63d4e46f0cb0296b630822af50120b3605e348d7a3
|
|
| MD5 |
23437d8342ad48a2a682daf3e4242354
|
|
| BLAKE2b-256 |
511462f0561c62d2c9ef608be7051454af1e9f89ab34edb6e3e2b4a3b2efa5ce
|