Skip to main content

⏳ Timecraftx

Lightweight, readable, and powerful date utilities for Python.
Get common date calculations like start_of_week, end_of_week, yesterday, tomorrow, or even next_friday and prev_monday — with beautiful, clean code.


🔧 Features

  • ✅ start_of_week() and end_of_week() with customizable week start (Sunday or Monday)
  • ✅ yesterday() and tomorrow() with optional reference date
  • ✅ next_weekday() and prev_weekday() with helpers like next_monday(), prev_sunday(), etc.
  • ✅ Works with date objects directly (no timezone mess)
  • ✅ Enum-based safety for weekdays via Day
  • ✅ Fully tested, no external dependencies

📦 Installation

pip install timecraftx

🚀 Quickstart

from datetime import date
from timecraftx import (
    start_of_week, end_of_week, yesterday, tomorrow,
    next_friday, prev_monday, Day
)

today = date(2025, 6, 4)

print(start_of_week(today))               # 2025-06-02 (Monday)
print(end_of_week(today))                 # 2025-06-08 (Sunday if Monday is week start)

print(yesterday(today))                   # 2025-06-03
print(tomorrow(today))                    # 2025-06-05

print(next_friday(today))                 # 2025-06-06
print(prev_monday(today))                 # 2025-06-02

📘 API Reference

Week Utilities

start_of_week(from_date: Optional[date] = None, week_start: Day = Day.MONDAY) -> date

Returns the first day of the week. Defaults to today and Monday.

end_of_week(from_date: Optional[date] = None, week_start: Day = Day.MONDAY) -> date

Returns the last day of the week (6 days after start_of_week).


Relative Days

yesterday(from_date: Optional[date] = None) -> date

Returns the day before the given date.

tomorrow(from_date: Optional[date] = None) -> date

Returns the day after the given date.


Next Weekday Utilities

next_weekday(from_date: Optional[date] = None, target: Day = Day.MONDAY) -> date

Returns the next occurrence of a specific weekday.

Day-specific helpers:

  • next_monday()
  • next_tuesday()
  • next_wednesday()
  • next_thursday()
  • next_friday()
  • next_saturday()
  • next_sunday()

Previous Weekday Utilities

prev_weekday(from_date: Optional[date] = None, target: Day = Day.MONDAY) -> date

Returns the most recent past occurrence of a specific weekday.

Day-specific helpers:

  • prev_monday()
  • prev_tuesday()
  • prev_wednesday()
  • prev_thursday()
  • prev_friday()
  • prev_saturday()
  • prev_sunday()

Enum

Day

Enum values for each day of the week, from Day.MONDAY to Day.SUNDAY.


🛡️ License

MIT License. See LICENSE.


👤 Author

Jacobo Tapia
GitHub: @Jatapiaro
Project: https://github.com/Jatapiaro/timecraftx


🌟 Contribute

Found a bug or have an idea? PRs welcome. Open an issue or submit a patch.

Metadata

Release files for timecraftx 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for timecraftx 1.0.2
File Size Uploaded
timecraftx-1.0.2.tar.gz 10.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for timecraftx 1.0.2
File Interpreter ABI Platform
timecraftx-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 17.3 kB

Release files / timecraftx-1.0.2.tar.gz

Download URL timecraftx-1.0.2.tar.gz
Size 10.7 kB
Tags Source
SHA-256 checksum
How to use checksums
62f2dc3a8c5a033b09432c8f50b6e7da9812ee3c62d8d18b4424b237ded11dca
BLAKE2b-256 checksum
How to use checksums
5c61ff5373d2385801c89e62b7910210ef7fb81c5786dd679ec6e41ffad6448e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.32.3

Release files / timecraftx-1.0.2-py3-none-any.whl

Download URL timecraftx-1.0.2-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
84dbdd0f9cdb5b2c558bf242380e2b80293da07dad939f516751e6fbd3a082bb
BLAKE2b-256 checksum
How to use checksums
fc7c08127f7cd407eef5def586828ea4dc9f5cf1b6ad6f133983fe4daab07772
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.32.3

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page