Skip to main content

Makes working with days super easy

Project description

Justdays

Package to make working with days and ranges of days in Python super easy.

The package contains two classes:
Day handles everything you want to do with days.
Period handles a range of Day objects.

Current version: 1.9.2

Installation

python -m pip install justdays

Day class usage

Initializing a Day

day = Day()  # No arguments, initalize with the current day
day = Day('2022-08-16')  # One argument, string in YYYY-MM-DD format
day = Day(2022, 32)  # Two arguments: year, week. Day with be the Monday of that week
day = Day(2022, 8, 16)  # Three arguments: year, month, day. 
day = Day(datetime(2022, 8, 16))  # Initialize with Python datetime object
day = Day(date(2022, 8, 16))  # Initialize with Python date object

Accessing Day fields

d = day.d  # int
m = day.m  # int
y = day.y  # int
as_string = day.str  # in YYYY-MM-DD format

Represenation

str(day) # Returns the day in YYYY-MM-DD format
day.as_datetime() # Returns the day as a Python datetime object
day.as_date() # Returns the day as a Python date object
day.strftime(format_string) # Returns the day as a string formatted according to the format string
day.as_unix_timestamp() # Returns the day as a unix timestamp (int)

Days further away or in the past

day.next()  # Next day
day + 1  # Next day
1 + day  # Next day
day.previous()  # Previous day
day - 1  # Previous day
day.next_weekday()  # Next day that is on a weekday
day.previous_weekday()  # Previous day that is on a weekday
day.plus_days(3)  # Add 3 days to the day
day + 3
day.plus_days(-3)  # Subtract 3 days from the day
day.plus_weeks(1)  # Add 1 week to the day
day.plus_months(1)  # Add 1 month to the day

Comparing days

day1 = Day('2022-08-16')
day2 = Day('2022-08-20')
day2 > day1  # Returns True if day2 is after day1
day2 == day1  # Returns True if day2 is the same day as day1
days_difference = day2 - day1  # Returns the difference in days between two days (4)

Miscellaneous

day.is_weekend()  # Returns True if the day is a weekend
day.is_weekday()  # Returns True if the day is a weekday
day.day_of_week()  # Returns the day of the week as an integer (0 = Monday, 6 = Sunday)
day.day_of_year()  # Returns the day of the year as an integer (1 = 1st of January, 365 = 31st of December in a non leap year)
day.fraction_of_the_year_past()  # Returns the fraction of the year that has passed (0.0 = 1st of January, 1.0 = 31st of December)
day.week_number()  # Returns the week number of the year (1 = first week of the year, 52 = last week of the year)
day.last_monday()  # Returns the last day that was a Monday or the day itself if it is a Monday
day.last_day_of_month()  # Returns the last day of the month of the day
day + ' is a nice day'  # Add string to a day
'The date is ' + day  # Add string to a day

Period class usage

Period is just a day range. Either fromday or untilday can be left to None

Initializing a Period

period = Period(day1, day2)  # Period ranging from day1 (included) until day2 (not included)
period = Period(day1)  # One argument: fromday. Untilday is left open
period = Period('2022-08-16', '2022-08-20')  # Period can be initialized with strings in YYYY-MM-DD format
period = Period.from_week(2022, 32)  # Period ranging from the Monday of week 32 until the Sunday of week 32
period = Period.from_month(2022, 8)  # Period ranging from the 1st of August until the 31st of August

Accessing Period fields

fromday = period.fromday
untilday = period.untilday
length = len(period)  # Returns maximum integer value for open-ended periods

Iterating over a Period

for day in period:
    print(day)

Checking if a Day falls within a Period

if day in period:
    print('yes!')

Operations with Periods

overlap = period1 & period2  # Calculate overlap between two periods
union = period1 | period2  # Calculate union of two periods
if period1.intersects(period2):
    print("Periods overlap")

Additional Period methods

if period.is_empty():
    print("Period has no duration")
if period:  # Truthy operator, returns True if period is not empty
    print("Period is not empty")
shifted_period = period.shift(7)  # Move period 7 days forward
split_periods = period.split(30)  # Split period into 30-day chunks

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

justdays-1.9.3.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

justdays-1.9.3-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file justdays-1.9.3.tar.gz.

File metadata

  • Download URL: justdays-1.9.3.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.3

File hashes

Hashes for justdays-1.9.3.tar.gz
Algorithm Hash digest
SHA256 b894b33d9df7a83e8d5f10764f57dca7b91eed4d5e431205a99eb743e0109939
MD5 b63cd5162fa935d66ac5c8f6ecc4a931
BLAKE2b-256 eeb4d6331e0f220044cac18ed493519c9fcb7e2dac52e924b8ab51010004a9ed

See more details on using hashes here.

File details

Details for the file justdays-1.9.3-py3-none-any.whl.

File metadata

  • Download URL: justdays-1.9.3-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.3

File hashes

Hashes for justdays-1.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 374202334842fbce290560060b38ff01808c36bbbec89b99d11079ff71ce7cbc
MD5 741d0a5e7f2305d934c24915c0bb993e
BLAKE2b-256 bfcc928c8be3ab5607cfb3a1617d60f64ca234696b84f1d02ea942be073e7f67

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